🐞Encontramos um BUG no Arduino! Aprenda como evitar este BUG!
HTML-код
- Опубликовано: 29 янв 2020
- 👉 CURSO DE ROBÓTICA COM ARDUINO PARA PRINCIPIANTES:
(com apoio às aulas via chat)
👉 CURSO COMPLETO DE ARDUINO: cursodearduino.net/
(com apoio às aulas via chat)
💡 AULA ON-LINE COMPLETA DE ARDUINO (GRÁTIS): cursodearduino.net/aula-online/
⚡ LIVRO ELETRÔNICA PARA AUTODIDATAS - GABRIEL TORRES: bit.ly/2VlrL8x
📦 COMPRE ARDUINO E ACESSÓRIOS EM: www.arducore.com.br/
😎 SITE DO CANAL:
(Todo o conteúdo organizado)
📺 RUclips DO CANAL: / brincandocomideias
👉 INSTAGRAM DO CANAL: / canalbrincandocomideias
👉 FACEBOOK DO CANAL: / paginabrincandocomideias
#cursodearduino
#arduino
#arduinocomofunciona
#arduinoparaqueserve
#arduinoprograma
#internetdascoisas
#iot
#cursoderobotica
#robotica Развлечения
👉 CURSO COMPLETO DE ARDUINO: cursodearduino.net/
⚡ LIVRO ELETRÔNICA PARA AUTODIDATAS - GABRIEL TORRES: bit.ly/2VlrL8x
📦 COMPRE ARDUINO E ACESSÓRIOS EM: www.arducore.com.br/
eu queria q fosse codigo de maquina pura
de 0 e 1 ligado e desligado mas
o computador ler isso como uma caracter
tambem queria saber o codigo de maquina da intel mas o corretor de erro não deixa o codigo puro
@@DarkCybergun talvez fiseram isso por clickbait
@@DarkCybergun era so dar um delay
@@DarkCybergun a agora eu vi que não e eletronica
Caro mestre,
Na minha opinião não trata-se de bug do compilador pois apenas variáveis globais são iniciadas com zero.
Como a variável foi declarada dentro da função loop() sem ser iniciada, conterá o valor que existir na pilha quando for carregada!!!
Falou tudo que pensei.
Perceba q não foi um valor qualquer, mas sim justamente o q estava dentro do bloco do if.
O único bug eh do próprio programa, não do arduinos. Se você acessa uma variável local não inicializada em linguagem c, o resultado eh indefinido.
A pilha não armazena somente os endereços de retorno das funções?
@@JulioCesar-hn3dy não. Variáveis locais são "empilhadas".
Não é bug, isso no mundo da programação ser chama "lixo de memória", acontece quando uma variável não é iniciada.
Oi Filipe. Muito obrigado por participar do canal.A questão não é a variável, e sim, o comando dentro do if ter sido executado, mesmo seo o if ter sido validado. Abraço da Equipe Canal Brincando com Ideias.
Em outras linguagens de programação tipo não vejo isso acontecendo, geralmente quando se cria uma variável declarando-a ela deve se ter um valor neutro, no caso de inteiro é meio que automático ser 0, talvez falte algo, nada é perfeito. kkkkk pelo que vejo é mais na linguagem C
@@BrincandocomIdeias Na verdade pode ser que entre no if pelo fato de uma variável nao iniciada pode ter qualquer valor... por isso ele não tem como comparar e entra no if.
@@fabiotortorella4546 Assiste de novo e repara no 7:45. (não passou pelo if)
Como disseram não é um bug, é o comportamento esperado do C, como a variável não foi inicializada com nenhum valor, é lido qualquer "lixo" que estiver que estiver na memória.
Em relação a executar um código dentro do IF que não deveria, isso não é verdade, o código não foi executado. Mas, no código de máquina, as variáveis locais são salvas em registradores, que são reaproveitados a cada iteração do loop. "E por que o valor oitenta foi atribuído a um registrador?" Isso só olhando o código assembly gerado para confirmar (o que não é difícil). Uma possibilidade é por uma questão de otimização, pois a atribuição precoce pode ajudar a não quebrar o pipeline evitando instruções de salto.
De qualquer modo, o valor da variável não inicializada é indefinido, então deve-se esperar que qualquer valor pode ser lido dela.
Oi Jaciroscar. Muito obrigado por participar do canal. Como dissemos, a qustão não está na variável e sim porque o arduino executou um comando dentro do if, sem o if ter sido validado? Abraço da Equipe Canal Brincando com Ideias.
A questão é que ele rodou apenas uma das linhas dentro do bloco do IF. Isso é inaceitável. Mesmo se houvesse um erro no código, isso nunca deveria acontecer.
@@Rafnunes Ele não rodou, apenas pegou um lixo anterior. A especificação do C diz explicitamente que o comportamento nesse caso é indefinido (qualquer coisa pode acontecer). Como que o compilador seguir a especificação é inaceitável? Você pode questionar o especificação do C achando ruim, mas não pode dizer que é um bug do compilador
@@jaciroscar Posso ter entendido errado, mas em um certo ponto do código, quando ele atribuiu 80 à variável, executou-se apenas uma das duas linhas do bloco. Ainda que o valor da variável seja desconhecido, a meu ver isso não deveria acontecer. Ou eu entendi errado.
@@Rafnunes É que enquanto uma variável não é inicializada seu valor pode ser qualquer coisa. E essa é a especificação do C. Aconteceu desse "qualquer" coisa ser 80, pois o compilador se permite usar aquele região de memória para qualquer cálculo interno intermediário. Pode ser que em outro compilador, ou até mesmo no mesmo compilador em outro nível de otimização de código seja um outro valor diferente de 80, entretanto, qualquer valor está "correto". Não é que uma linha de código foi executada e outra não. Mas que o registrador utilizado pela variável estava "livre" para ser usado pelo compilador enquanto o valor dele não foi inicializado. Está errado o que o cara do vídeo disse que no início a variável devia ser zero. Não deveria, poderia ser qualquer coisa e geralmente vai ser algum valor lixo mesmo (uma sobra de outras operações, imprevisível e sem significado nenhum). Lembrando que a cada iteração do loop, seu valor volta a ser lixo.
Ótima explicação ! Obrigado professor.
Oi Marcos. Muito obrigado. Abraço da Equipe Canal Brincando com Ideias.
Oi Flavio, qualquer memória que se declare sem inicialização tem seu valor randômico, isto acontece porque a área de memória RAM do microcontrolador não tem valor específico, ou seja, o fabricante não colocar um circuito que force um valor. Um valor pré determinado é iniciado no SFR (Special Function Register), ai sim o fabricante coloca circuito para iniciar com um valor correto. Um exemplo disto é o registrador DDR (Data Direction Register) que tem que ter seu valor igual a 0 para iniciar as portas como entrada. Uma solução para isto é como você disse, forçar um valor na declaração da variável ou declarar como static. Isto não é um BUG do compilador, ele só esta fazendo oque a norma ANSI ISO C99 diz. Um abraço
Oi QSP. Muito obrigado por participar do canal e pela sua explicação. O detalhe é que o bug não está na variável. e sim porque o comando dentro do if foi executado sem o if ter sido validado? Abraço da Equipe Canal Brincando com Ideias.
Em linguagem C ou C++ acessar variáveis automáticas ou locais não inicializadas leva o programa a um estado indefinido. Logo, isso não eh bug do arduino e sim do programa que foi apresentado.
Oi Bruno. Muito obrigado por participar do canal e pela sua opinião. O fato é que o bug não está na variável, e sim, o porque do arduino ter executado o comando dentro do if, sem que o if tenha sido validado. Abraço da Equipe Canal Brincando com Ideias.
@@BrincandocomIdeias como expliquei em outro comentário. A partir do momento que você acessou uma variável não inicializada você entrou no campo do "undefined", não existe garantia alguma do que pode ocorrer com seu programa a partir deste ponto.
@@bcsanches entao amigo, mas mesmo sem saber o que ele ia considerar....ele considerou que estadoleds estava em 0, entrando no if, mas porque so executou um comando, e o serial.print nao?
@@bcsanches Vc não entendeu que o problema não é a variável estadoLeds. E sim, como entrou no If(!estado_bt1) sem q ele tenha sido validado
@@rodrigoshisno9939 entendi perfeitamente o questionamento e a sensação que o programa "ignorou" o if. O que você não entendeu é que em se tratando de linguagem C e C++, a especificação da linguagem é clara: a partir do momento que seu programa acessa uma variável local não inicializada, você fez uma operação "indefinida". A partir deste ponto, o compilador não lhe garante que vai gerar o código corretamente ou que seu programa vai comportar como esperado. Ali o que ocorre é que otimizadores de código C/ C++ são agressivos e nesse código eliminam as variáveis criadas pois são desnecessárias. Entretanto, como você tem ali uma operação indefinida, o compilador se perde e não sabe bem como gerar o código e o resultado, é esse: godbolt.org/z/CLXWjg
Nada de if, o compilador removeu tudo pois não faz sentido...
Agora incializando a variável, esta ai o resultado: godbolt.org/z/DTKwkp
Valeu Gideon, valeu prof. Flávio.
Oi João. Muito obrigado por participar do canal. E agradecemos em nome do nosso aluno Gideon. Abraço da Equipe Canal Brincando com Ideias.
VALEU! Acabou de salvar o "esquentamento" de várias mentes!
Oi Croa. Muito obrigado por participar do canal. Achamos que sim, mas pelos comentários, estamos esquentando outras. rsrsrs. Abraço da Equipe Canal Brincando com Ideias.
Flávio, existe uma recomendação (boas práticas) para quem programa, sobretudo em C. A recomendação é de sempre atribuir um valor ao iniciar uma variável, como você fez.
Oi Gustavo. Muito obrigado por participar do canal e pela sua explicação. O problema não é a variável. É porque o comando dentro do if foi executado, sem o if ter sido validado? Abraço da Equipe Canal Brincando com Ideias.
A dica que você deu é a mais importante, sempre se deve iniciar com um valor.
Oi Heino. Muito obrigado por participar do canal. Realmente, isso aparentemente resolve. Abraço da Equipe Canal Brincando com Ideias.
Show de bola!
Oi João. Muito obrigado. Abraço da Equipe Canal Brincando com Ideias.
Muito bom Mestre! Valeu por compartilhar e parabéns pela didática. (Aos entusiastas da linguagem C, aceitem que é BUG! O compilador deveria exigir a inicialização da variável. Vão falar que é pilha, que é lixo e etc... Mas não importa. É BUG! 😁👍).
Oi Cmacma. Muito obrigado por participar do canal e pela sua opinião. A questão do bug é porque o comandodentro do if foi executado, sem o if ter sido validado? Abraço da Equipe Canal Brincando com Ideias.
Não é Bug, esta no padrão da linguagem, simples assim. É como entrar em um carro e querer que ele voe achando que é um avião.
@@BrincandocomIdeias a partir do momento que você acessou a variável não inicializada o programa foi para um estado inconsistente. Lembre-se que o compilador otimiza o código e muitas vezes variáveis e blocos inteiros são removidos, sem afetar a lógica do programa. Mas para que isso ocorra, seu programa deve estar bem formado, o que não é o caso deste exemplo.
Programo em "C" a mais de 20 anos e nunca tive este tipo de problema porque sempre que crio uma variável eu inicio ela com um valor porque, ao ser criada uma variável é alocada uma posição de memória para armazena-la e o conteúdo desta posição de memória é atribuído a variável se ela não for iniciada.
OK, sempre valor inicial sempre.
Quebrei a cabeça por uma semana com algo parecido.. Realmente a gente procura em tudo q eh lugar.. No meu caso eram vários 'ifs' e deveria usar alguns 'else ifs'. Esse tipo de informação é sempre muito relevante. Obrigado por compartilhar pro mundo!
Oi PNG. Muito obrigado por participar do canal. E valeu por compartilhar sua experiência. Abraço da Equipe Canal Brincando com Ideias.
@@BrincandocomIdeias Montei um atendimento tipo URA pra minha empresa usando um UNO (1 serial só..), um MP3 mini e um SIM 800. Além de usar trechos de seus sketches, muita informação foi útil pra concluir esse desafio.. 3 comunicações seriais em um micro de 1 serial.. E sem entender quase nada de programação.. Muito grato por todo o conhecimento!
Valeu professor obrigado
Oi, sou desenvolvedor tb dês de a década de 90, Flávio dá uma geral de boas práticas de programação para o pessoal...
Ao estilo de "Código Limpo", o livro.
Oi Mauro. Muito obrigado por participar do canal e pela sugestão. Talvez façamos esse vídeo. Abraço da Equipe Canal Brincando com Ideias.
Adorei a dica. Realmente tenho costume de não declarar valor. Show de bola.
Oi Rogerio. Muito obrigado. Abraço da Equipe Canal Brincando com Ideias.
Bug ou não, a informação é muito relevante, e vou guardar ou me lembrar pra os meus proximos projetos. Obrigado professor!
Oi trashfilmes. Muito obrigado. Que bom que gostou do vídeo.
Se você deseja:
Avançar ainda mais no universo Arduino,
Ter acesso a um conteúdo organizado, que você pode acessar tanto pelo celular quanto pelo computador
Participar semanalmente do Encontro com os Alunos com o prof. Flávio, um espaço onde você poderá tirar dúvidas, apresentar seus projetos, debater ideias
e soluções e ainda bater um papo tecnológico expandindo seus horizontes,
Acesso a uma equipe preparada para tirar suas dúvidas enquanto estuda,
Acesse nossa página: brincandocomideias.com.br/#meus-cursos
E escolha o curso certo para você.
Não esqueça de deixar um Like.
Um forte abraço da Equipe do canal Brincando com Ideias.
Boa noite Flávio. Isso me faz pensar que várias vezes a lógica que fiz não replicava...
À partir de hoje, todas variáveis públicas e valor definido!
Ótimo vídeo, abraço.
Oi JOsé. Muito obrigado por participar do canal e pela sua opinião. De fato, vamos recomendar sempre no canal. Abraço da Equipe Canal Brincando com Ideias.
Esse video valeu demais!
Oi Francisco. Muito obrigado. Abraço da Equipe Canal Brincando com Ideias.
Parabéns Prof Flávio, acredito que revivemos a história do ovo de Colombo. Muito obrigado por facilitar a evitar alguns tropeços! Abração!
Oi Magic. Muito obrigado por participar do canal. Abraço da Equipe Canal Brincando com
fala flavio que top em eu quebrei a cabeça tentando ver oque poderia ser o problema mas sem chanse so depois de vc falar e mostrar msm pra eu entender kkkk
valeu pela esplicação.
Estou tentando fazer uma bomba fack de airsoft .
vc tem algum video de lcd com I2c e teclado 4x4 ?
Oi Carlos. Muito Obrigado pela sua participação.
Pois é. Pequenos detalhes que fazem muita diferença. Quanto aos dispositivos que mencionou, temos ambos, mas em vídeos separados, mas não é difícil juntá-los em um unico projeto. Com as devidas bibliotecas instaladas, você também pode encontrar as programações básicas nos sketchs de exemplos. Gostaríamos de aproveitar a oportunidade para sugerir que assista a uma aula online gratuita. cursodearduino.net/aula-online
Acompanhe nosso canal no Telegram: t.me/canal_brincando_com_ideias
Acompanhe nosso canal no Instagram instagram.com/brincandocomideias/
Deixe-nos um like e compartilhe nossos vídeos para que outras pessoas conheçam nosso trabalho.
Um forte abraço da Equipe Canal Brincando com Ideias.
Legal a aula, já me aconteceu isso, com outro compilador e microcontrolador, e realmente variáveis não carregadas porem dar esse tipo de problema.
No caso de não ter passado no 1º if , a variável pode ter pego lixo da ram quando foi alocada dendro da passagem do loop.
Oi Paulo. Muito obrigado. E obrigado também por seu comentário. Abraço da Equipe Canal Brincando com Ideias.
Por programar em php tenho a mania de sempre criar as variáveis com um valor já definido sempre, mas conhecimento nunca é demais! Parabéns pela descoberta e espero que seja corrigido logo para que outras pessoas não passem por isso
Oi Thiago. Muito obrigado por participar do canal. Isso aí. Sempre que pudermos divulgar informações úteis, faremos. Abraço da Equipe Canal Brincando com Ideias.
Oi Flavio, eu construí um projeto de Joystick Mache com o Arduino Leonardo. Estou tendo problemas com os analógicos pois eles não param de tremer. já tentei aterramento nas saídas analógicas não utilizadas mas não surtiu muito efeito. Estou utilizando potenciômetros B10K e testei com o A10K e B50K. O que eu deveria fazer para resolver esse problema de tremedeira nos analógicos?
Show
Oi Carlos. Muito obrigado. Que bom que gostou. Gostaríamos de aproveitar a oportunidade para sugerir que assista a uma aula online gratuita. cursodearduino.net/aula-online
Acompanhe nosso canal no Telegram: t.me/canal_brincando_com_ideias
Deixe-nos um like e compartilhe nossos vídeos para que outras pessoas conheçam nosso trabalho.
Um forte abraço da Equipe Canal Brincando com Ideias.
Isto não é bug, o q houve foi a leitura de uma variável antes dela ser iniciada. Quando uma variável é declarada, ela aponta para algum lugar da memória, mas não a zera e pode conter qualquer valor q ali estava (lixo), só após iniciar a variável (atribuir um primeiro valor) q ela é realmente definida.
O problema é que o comando dentro do if foi executado, mesmo seo o if ter sido validado
Obrigado Gideon!
Oi Sidnei. Muito Obrigado pela sua participação.
Gostaríamos de aproveitar a oportunidade para sugerir que assista a uma aula online gratuita. cursodearduino.net/aula-online
Acompanhe nosso canal no Telegram: t.me/canal_brincando_com_ideias
Acompanhe nosso canal no Instagram instagram.com/brincandocomideias/
Deixe-nos um like e compartilhe nossos vídeos para que outras pessoas conheçam nosso trabalho.
Um forte abraço da Equipe Canal Brincando com Ideias, e um abraço também para o Gideon.
Ótima dica mestre! Nunca ia imaginar esse bug no compilador.
Queria fazer um pedido, poderia ensinar a renomear e mudar a senha do modulo bluetooth HC-06. Algumas aplicações ficam vulneráveis com a senha de fábrica. Grato!
Oi Rildo. Muito obrigado Estudaremos as possiblidade e se possível, traremos um vídeo para o canal. Abraço da Equipe Canal Brincando com Ideias.
Vídeo fail kkkkk acontece nos melhores canais! afinal, ninguém sabe tudo. De qualquer forma agora surge a oportunidade de um novo vídeo explicando de forma correta o real motivo do problema ocorrido no código. Forte abraço meu nobre, teu canal é excelente e me ajuda bastante.
Oi Danilo. Muito obrigado por participar do canal. Pois é. Achamos que vai ser preciso outro vídeo mesmo. rsrsrsrs.Abraço da Equipe Canal Brincando com Ideias.
Excelente dica Flávio! Você tem algum post com rádio LoRa? Ou poderia me indicar? Preciso programar um par cliente/Servidor para área rural com alcance de 1500m
Oi Carlos. Muito obrigado por prticipar do canal. Infelizmente ainda não temos nada sobre LoRa. Estamos estudando esta comunicação para podermos trazer um vídeo de qualidade. Gostaríamos de aproveitar a oportunidade para sugerir que assista a uma aula online gratuita.
cursodearduino.net/aula-online
Acompanhe nosso canal no Telegram: t.me/canal_brincando_com_ideias
Deixe-nos um like e compartilhe nossos vídeos para que outras pessoas conheçam nosso trabalho.
Abraço da Equipe Canal Brincando com Ideias.
Muito bom o vídeo, Flávio e equipe. Tive que assistir umas 5 vezes, pois eu não estava acreditando como o Arduino executou esse código. Percebi que muitos não entenderam o bug. Estão falando do lixo de memória na variável *estadoLeds* . Mas, os “excelentes programadores” de comentários, e muito arrogantes, não perceberam que o problema é no: *If(!estado_bt1)* (linha 21) 8:02
Como foi possível entrar no if (na linha 21) sem que o if(!estado_bt1) fosse validado,
executar a instrução *estadoLeds = 80*; (linha 23)
e não executar o *Serial.println(“passou pelo ponto 1”);* (linha 22) ?
O caso da variável *estadoLed* não ter sido declarada e atribuída um valor, não implica no comportamento do *if* testando a variável *estado_bt1*.
Obrigado pelas ótimas aulas.
Exatamente. O pessoal achando q o problema é a variável do LED. Mas, o bug é como entrou no IF sem validar.
Oi Rodrigo. Muito obrigado. E obrigado também por sua opinião. Grande Abraço da Equipe Canal Brincando com Ideias.
Prof. Flavio concordo com Filipe Fernandes, isso é erro de programação, deve-se ao declara a viariável estadoLeds atribuir um valor padrão de 0zero, assim ela carrega e inicia sem valor e ao pressionar liga, isto é uma dificuldade de organizar e declarar variáveis, fiz meu Tcc todo com ARDUINO UNO, e funciona normal. Boa sorte, abs Flavio Fabricio de Sao Jose dos Campos
Oi Fabricio. Muito obrigado por participar do canal.O bug ao qual nos referimos, é porque o comando dentro do if foi executado sem o if ter sido validado? Abraço da Equipe Canal Brincando com Ideias.
@@BrincandocomIdeias professor Flavio eu preciso falar com o Sr por Whatsapp se for possivel? Vou deixar meu zap, é melhor pessoalmente ou por audio aguardo sua msg 12-991755820 é sobre manutençao em um projeto meu em Arduino, estou online o dia todo aguardo sua ligaçao
Grato Fabricio
Vlw Flávio.... Já passei por isso 😅
Oi Emanoel. Muito obrigado por participar do canal. Pelo visto, vários já passaram por isso. Valeu por compartilhar sua experiência. Abraço da Equipe Canal Brincando com Ideias.
Fala professor poderia fazer um video falando sobre interferencias eletricas para a rapaziada que usa arduino para controlar cnc
Oi Yoshi. Muito obrigado por participar do canal e pela sugestão. Vamos estudar. Abraço da Equipe Canal Brincando com Ideias.
Não se trata de bug, ao criar uma variável, a mesma é vinculada a um espaço físico na memória "denominada registrador". Consultando o datashet nota-se que a memória podem vir com valores indeterminados ( 0 ou 1 ), o fabricante informa que ao criar um rótulo que nesse caso é uma variável é imprescindível acompanhar seu valor inicial. Portanto, não se trata de um "bug" e sim de um ERRO no momento da programação que se encontra em desacordo com o datashet do microcontrolador utilizado no arduíno.
Em Lógica TTL, sem sinal de entrada é interpretado como nível alto, pode ser isso que ocorre com variável sem valor na memória de hardware.
Pessoal está correto o vídeo do professor Flávio. O fato de não ter inicializado a variável foi sim um problema. Mas o bug está justamente no que ele explicou...com a variável não inicializada, ele teria que ler esse "lixo" da variável e passar ou não pelo if. o problema foi que com esse valor indefinido da variável ele executou "metade do if" e isso sim é um bug. Como ele disse, inicializando a variável com um valor cessou o bug.
Olá excelente canal.
Poderia fazer um leitor de PH com LCD? Estou tentando fazer mas não tá rolando .
OI DC Pesca. Muito Obrigado pela sua participação.
Nós ainda não temos nenhum sensor deste tipo, mas você pode se basear em outros sensores que mostramos no canal. A forma de ler um sensor analógico não diferencia muito entre um e outro. É aconselhável que teste cada dispositivo separadamente para saber se todos estão funcionando bem. Observe também a alimentação, pois além da tensão elétrica, existe a corrente que é tão importante quanto. No cursodearduino.net você aprenderá a eletrônica e a programação necessárias para desenvolver seus projetos com arduinos e micro controladores. Ainda contará com uma equipe de suporte para tirar dúvidas e um encontro semanal com o prof. Flavio, seus assistentes e os demais alunos para tirar dúvidas, apresentar projetos, debater ideias e soluções, e até mesmo bater um papo tecnológico. Gostaríamos de aproveitar a oportunidade para sugerir que assista a uma aula online gratuita. cursodearduino.net/aula-online
Acompanhe nosso canal no Telegram: t.me/canal_brincando_com_ideias
Acompanhe nosso canal no Instagram instagram.com/brincandocomideias/
Deixe-nos um like e compartilhe nossos vídeos para que outras pessoas conheçam nosso trabalho.
Um forte abraço da Equipe Canal Brincando com Ideias.
if (count >= 100) {
noInterrupts(); //desliga a interrupção
count = 0;
delay(5000); //NÃO EXECUTA O TEMPO
} else if (count == 0) {
count = 1;
interrupts(); //liga a interrupção
}
Em Pascal uma variável é declarada sem valor, em Java deve ser declarada com valor. Quando comecei programar para Arduino sempre declarei variável com valor acho uma boa prática.
Oi José. Muito obrigado por participar do canal e pela sua opinião. Destacamos que o bug não se refere a variável, e sim, porque o comando dentro do if foi executado, sem o if ter sido validado? Abraço da Equipe Canal Brincando com Ideias.
Fiquei orgulhoso que notei o que poderia ser o bug antes da revelação 🤩
Oi Geraldo. Muito obrigado por participar do canal. Muito bom. Parabéns. Isso indica sua boa percepção. Abraço da Equipe Canal Brincando com Ideias.
Nooossa, também faço o curso de arduino, tive o mesmo problema durante a aula de if, só que achei outra solução, mas achei que eu estava errado na época...
Oi Pedro. Muito obrigado por participar do canal Pois é. . Acreditamos que outros alunos também tenham encontrado problemas. Mas agora vamos adotar o habito de sempr iniciar a variável. Abraço da Equipe Canal Brincando com Ideias.
enum { PinA = 2, PinB = 3, ints = INPUT_PULLUP };
static byte abpre;
volatile int count;
int pre_count;
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
pinMode(PinA, ints);
pinMode(PinB, ints);
attachInterrupt(0, conta_pulso, CHANGE); // Inicializa int0 e configura como mudança de estado
attachInterrupt(1, conta_pulso, CHANGE); // ,,,,,,,,,, int1
abpre = count = pre_count = 0;
Serial.begin(115200);
}
// Rotina de int
void conta_pulso() {
enum { upMax = 0x66, downMax = 0x99 };
byte abnovo = (digitalRead(PinA)
Muito bom os seus vídeos está de parabéns. Gostaria de saber se vc poderia me ajudar estou tentando fazer uma balança com o Arduino mas não está dando certo o valor do peso não altera confirme a carga da balança e o valor que é mostrado fica variando sem parar estou tentando fazer com 2 célula de carga e o módulo hx711
Oi Vithor. Muito obrigado por participar do canal. No momento, infelizmente, não dispomos dos serviços de consultoria ou suporte aos vídeos do canal, mas informamos que temos quase 500 vídeos gratuitos no canal, que poderão ajuda-lo com seu projeto. Sugerimos ainda, o cursodearduino.net, onde você aprenderá a eletrônica e a programação necessárias para desenvolver seus projetos com arduino, sem dificuldades. Abraço da Equipe Canal Brincando com Ideias.
Quando não atribuímos um valor ao declarar a variável o valor assumido é inesperado. Nesse caso o compilador buscou no código qualquer comando que lhe atribuisse valor. Provavelmente para otimização do código. Mas a melhor prática é sempre atribuir valores ai declarar um inteiro.
Olá, boa tarde, tudo bem? Veja, eu já vi alguns botões push button que sem pressioná-los ele apresenta contato fechado (push button nc) e quando você o pressiona, ele apresenta contato aberto. E existe também os abertos (push button no), isso também pode acarretar este mesmo bug (que não é bug). Depois reproduzirei a lógica dele para ver isso e pela sua explicação, entendo que não é um bug, portanto, e sim um problema e declaração, sem inicializá-la e declarada dentro do procedimento, certo ou me equivoco. Obrigado
Oi Leandro. Muito obrigado por participar do canal e pela sua opinião. De fato existe mesmo esse problema com chaves mecânicas, mas isso resolve-se com o debounce que já foi mostrado aqui no canal e que é parte integrante do nosso curso de arduino. O problema aqui foi o arduino ter executado o comando dentro do if, sem o if ter sido validado. Dá para ver pelo debug que fizemos, que o botão mantém o mesmo nível lógico, mas mesmo assim, o comando é executado. Abraço da Equipe Canal Brincando com Ideias.
Numa aula de linguagem c na faculdade o professor fez um código justamente pra os alunos verem o lixo numa variável não iniciada, mas o que o vídeo mostra não é o bug com relação a isso, e sim por qual motivo o valor dentro do if foi aparece na variável????? Acho que todos sabem que se a condição do if não for satisfeita então o programa pula para a linha depois das chaves {}, eu mesmo já viu muito isso na prática debugando passo a passo programas em microcontroladores PICs, e dá pra ver o programa pulando tudo que ta dentro das chaves do if nessa situação. Então o bug NÃO se trata de aparecer um valor qualquer na variável não iniciada, O BUG É O PROGRAMA NÃO PULAR O QUE TÁ DENTRO DAS CHAVES DE UM IF NÃO VALIDADO.
Oi Josinaldo. Muito obrigado por participar do canal e pela sua opinião. Isso foi o que tentamos explicar no vídeo, mas parece que isso não foi entendido. Talvez façamos outro vídeo. Abraço da Equipe Canal Brincando com Ideias.
@@BrincandocomIdeias DEsculpe, mas o que você parece não entender, é que você criou um programa onde não existe garantia nenhuma da linguagem que a saída do compilador vai ser correta. O programa é mal formado e a especificação da linguagem deixa claro que nesse caso, não existe garantia que seu programa vai funcionar como esperado.
@@bcsanches Desculpe, mas o que você parece não entender é que o vídeo se refere a um comportamento não esperado do programa, o qual foi ler o conteúdo entre das chaves de um if não validado, e esse é o bug a que se refere o vídeo. Em lugar nenhum foi dito que o programa deveria ser exatamente como foi escrito e nem que tinha que ter garantia de funcionamento da forma que foi escrito. Mas até agora todos que vêm batendo nessa tecla não responderam o por quê do comportamento citado no vídeo: POR QUE O PROGRAM LEU O CONTEÚDO DENTRO DAS CHAVES DO IF NÃO VALIDADO AO INVÉS DE PULAR PARA A PRÓXIMA LINHA APÓS AS CHAVES?????? Uma variável não declarada não deveria afetar o comportamento do if, se isso não é um bug, o que é então? Vamos fazer uma analogia: se alguém não tiver higiene pode contrair uma doença infectocontagiosa, mas isso não quer dizer que a pessoa pode contrair uma tendinite por falta de higiene, pois a falta de higiene não afeta de maneira nenhuma o mecanismo de surgimento da tendinite. Ou seja, o que se estaria questionando não é contrair uma doença infecto contagiosa por falta de higiene, pois isso todos sabem que é possível, mas a questão seria como é possível contrair uma doença que não é infectocontagiosa por falta de higiene?
@@josenildo.galdino sim, eu entendo todos estarem assutados pelo if não funcionar. Mas entenda: vocês fizeram algo que a linguagem não define comportamento algum e não lhe da garantias. Por isso o if falha. Você olhou o disassembly do código? Postei links aqui, de uma olhada. Como a construção é inválida, o compilador simplesmente se perde. Não é bug, é comportamento indefinido. Podem postar bugs em tudo quanto é compilador C/C++ que eles vão apresentar isso e todos vão fechar o bug como não sendo bug.
@@josenildo.galdino a linguagem possui regras, se você infringe as regras, o compilador também não lhe da garantias que vai seguir as regras. Regra básica de quem programa em C: o compilador assume que o programador sabe o que esta fazendo e desculpe, insistir que isso dai é bug do compilador, mostra que o programador não sabe o que esta fazendo.
Muito bom mestre 👏👏👏
Oi Paulo. Muito obrigado. Abraço da Equipe Canal Brincando com Ideias.
Eu realmente tive um bug quando usei um sensor Hall ligado a porta analógica para marcar a posição inicial de um motor de passo. Depois de alguns dias, o arduino travava. Foi só remover o Hall que rodou perfeitamente. Alguma interferência do componente na parte de hardware. Fica uma dica.
Oi Mariano. Muito Obrigado pela sua participação e por compartilhar sua experiência com a gente. Dica anotada. Tentaremos encontrar soluções, caso tenhamos uma situação parecida. Você também pode contar com os seguintes cursos online:cursodearduino.net/principiantes, cursodearduino.net e cursodearduino.net/avancado.
Além de todo o conteúdo organizado dos cursos, você Ainda conta com nosso grupo de whats app para interagir com os demais alunos e com a equipe de suporte que estará pronta para responder suas dúvidas com relação ao conteúdo das aulas.
Nos cursos de arduino e arduino avançado, você também poderá participar do encontro semanal, via zoom, com o prof. Flavio, seus assistentes e os demais alunos onde você poderá tirar dúvidas, apresentar seus projetos, debater ideias e soluções e ainda bater um papo tecnológico onde todos aprendem muito.
Deixe-nos um like e compartilhe nossos vídeos para que outras pessoas conheçam nosso trabalho.
Um forte abraço da Equipe Canal Brincando com Ideias.
Se a lógica está certa, mas não atribuiu um valor antes, a lógica está errada. Não é um bug, é inexperiência do programador.
Oi Ceticismo. Muito obrigado por participar do canal. Na verdade, o bug não está na variável. O bug é que o arduino executou o comando dentro do if, sem ter executado o if. Abraço da Equipe Canal Brincando com Ideias.
Realmente... a maioria do pessoal não entendeu o problema... Se o if fosse na variável indefinida (estadoLeds) até tudo bem... Mas o programa entrou num if de outra variável que teoricamente não era nem pra entrar... Ele atribuiu valor pra variavel EstadoLeds após verificar como falso um valor true... e a galera insiste em falar de lixo memória...
Flávio, preciso da sua ajuda, o meu Arduíno não está funcionando, eu quero fazer um LED piscar, mas não consigo, e eu sempre confiro tudo como: programação e o sistema na proto board, confiro a porta (COM4) , coloco o resistor e não da certo, oque você sugira que eu faça??????
Oi Murilo. Continue tentando coisas diferentes. Troque a porta do arduino. Tente outro resistor.Procure substituir jumpers. Utilize sketchs prontos da aba de exemplos. É difícil dar palpites sem estar com o problema em mãos. Abraço da Equipe Canal Brincando com Ideias.
Flávio meu nome é josias, mim ajuda ai, baixei um app Evericircuit e estou tentando faser o motor funciona mas não consigo, tento direto na bateria 6v não pega, tento com um trasistor não pega, porque? Ajuda ai...
Oi Josias. Muito obrigado por participar do canal. Difícil ajudar. Qual programa? Qual motor?Alimentando como? São muitas questões que podem interferir no funcionamento de um projeto. Abraço da Equipe Canal Brincando Id
Pois é Flávio, vou me aprofunda mais nestas questoes e ver oque consigo, muito obrigado !
LIKE LIKE
Qualquer um que tenha feito um curso de programação sabe que deve inicializar uma variável antes de usar o valor armazenado. Ajuste seu material! www.arduino.cc/en/Reference/VariableDeclaration
Oi João. Muito obrigado por participar do canal e pela sua opinião. o fato é porque o comando dentro do if foi executado sem o if ter sido validado? Abraço da Equipe Canal Brincando com Ideias.
Tenho um projeto onde tem balança, leitor de cor, ldr e vários outros componentes eu tenho um botão pull UP e quando aperto ele o arduíno trava, descobri que quando desconecto os fios do LCD ele não trava, quando conecto os fios do LCD ele volta a travar, fios não está frouxo, a alimentação pode ser externa ou na do arduíno e acontece do mesmo jeito.. o q pode ser?
Oi Café Dutin. Muito obrigado pela sua participação.
A princípio, pensamos na alimentação. Além da tensão, a fonte precisa ter uma corrente(Amperes) suficiente para todos os dispositivos. Usando fontes externas, todos os negativos destas fontes e o GND do arduino, precisam estar conectados. Quando remove o display e o projeto funciona, está removendo somente do circuito, ou está removendo da programação também? Se é somente do circuito, o mais provável seria alimentação mesmo. tente deixar o display ligado e remover outro dispositivo para ver se o problema continua. Ou tente um sketch somente com o display, para saber se não é defeito do dispositivo. Se você deseja:
Avançar ainda mais no universo Arduino,
Ter acesso a um conteúdo organizado, que você pode acessar tanto pelo celular quanto pelo computador
Participar semanalmente do Encontro com os Alunos com o prof. Flávio, um espaço onde você poderá tirar dúvidas, apresentar seus projetos, debater ideias
e soluções e ainda bater um papo tecnológico expandindo seus horizontes,
Acesso a uma equipe preparada para tirar suas dúvidas enquanto estuda,
Acesse nossa página: brincandocomideias.com.br/#meus-cursos
E escolha o curso certo para você.
Não esqueça do Like e Compartilhe nossos vídeos para que outras pessoas conheçam nosso trabalho.
Um forte abraço da Equipe do canal Brincando com Ideias.
@@BrincandocomIdeias obrigado pela atenção, se isso ajudar vcs, o meu problema foi o seguinte, no meu projeto tem calha vibratória e quando eu ligava o vibrador o arduíno travava, dava uns pesos fantasmas, quando conectava o LCD o arduíno reiniciava sozinho, e eu já há uns 2 meses quebrando a cabeça resolvi ontem pra cá soldar todos os fios e coneccoes existente sem ter nenhum encaixe nos fios, isso resolveu todos os problemas com travamento, desligamento, pesos fantasmas e etc. Obrigado aí pelo comentário e Deus abençoe vcs.
Boa noite , Mestre isso esta acontecendo no meu arduino o código esta tudo certo mas o arduino não executa o código !!!
Oi Sergio. Muito obrigado por participar do canal. Este problema pode ter várias causas. Desde alimentação incorreta, até um arduino queimado. Tente mandar um sketch blink para testar se o problema é com o arduino ou com o seu programa. Gostaríamos de aproveitar a oportunidade para sugerir o curso de arduino.net onde você aprenderá a eletrônica e a programação necessárias para desenvolver seus projetos com arduino. Acompanhe nosso canal no o Instagram instagram.com/canalbrincandocomideias.
Deixe-nos um like e compartilhe nossos vídeos para que outras pessoas conheçam nosso trabalho.
Abraço da Equipe Canal Brincando com Ideias.
oi, na parte dos codigos eu consigo digitar e carrega normalmente ,mas meu arduino fica como os botoes pressionado no monitor de teste do programa e tambem fora dele. rsr sera que está em curto
Oi Washington. Muito obrigado por participar do canal. Isso pode ser um erro de programação, ou mal contato, Existem várias causas. Mas precisaríamos nalisar seu código e seu circuito. Gostaríamos de aproveitar a oportunidade para sugerir que assista a uma aula online gratuita. cursodearduino.net/aula-online
Acompanhe nosso canal no Telegram: t.me/canal_brincando_com_ideias
Deixe-nos um like e compartilhe nossos vídeos para que outras pessoas conheçam nosso trabalho.
Um forte abraço da Equipe Canal Brincando com Ideias.
Olha, quanto a inicializar as variáveis para não carregar lixo da pilha, estou junto, é praxe em algumas linguagens. Lembro desde o Fortran IV de ter que zerar vetores e matrizes. Mas ainda não entendi como que ele pode entrar no IF, atribuindo o valor 80, mas sem escrever a linha "passou pelo ponto 1" ? ambos os comandos não estão juntos dentro das { } do IF? Já que ele entrou indevidamente no IF, não tinha que ter executado as duas linhas?
Silvio Siqueira fiquei com a mesma dúvida
Oi Silvio. Muito obrigado por participar do canal. É exatamente essa a questão do bug, mas pelos comentários, acho que não fomos claros. Talvez façamos outro vídeo. Abraço da Equipe Canal Brincando com Ideias.
@@BrincandocomIdeias Exato! O pessoal centrou o foco (ou o fogo !) na declaração da variável, e não no "IF" que não "IFOU" ; )
Eu repeti o sketch aqui, sem declarar valor ao estadoLeds, e reproduzi o mesmo efeito "bugado". Porém, acrescentei algumas coisas que só somaram mais curiosidade:
- Não importa quantos comandos eu acrescento no IF, todos são desprezados. Exceto todos os comandos que contenham a variável estadoLeds, esses são sempre executados;
- Dentro do IF, se eu somo uma constante qualquer ao estadoLeds, ele imprime o valor 97! sempre... mesmo que eu some ou subtraia outra coisa após, imprime 97...
- Dentro do IF, se eu multiplicar ou dividir o estadoLeds por uma constante, ele não executa, não entra no IF...
- Dentro do IF, se eu dividir estadoLeds por ele mesmo, dá 1, ele imprime 1, e passa pelo "ponto 2" !
Muito estranho tudo isso kkk Que será esse 97 ??
Abraços, Professor!
Não seria melhor deixar ela como uma variável publica sem um valor setado para economizar espaço na memoria do Arduíno no caso de programas maiores ?
Oi Devison. Muito obrigado por participar do canal. O fato é que não é a variável o problema. É o porque o arduino ter executado o comando dentro do if, sem o if ter sido validado. Abraço da Equipe Canal Brincando com Ideias.
Deve ser coincidência, mas eu tive um problema muito estranho com o pino 8 do Arduino: quando preciso que o pino 8 trabalhe numa determinada frequência ele começa a perder tensão. Já ocorreu duas vezes comigo, em dois códigos diferentes e com placas diferentes. O resultado é que eu sempre evito utilizar o pino 8 em qualquer projeto.
Oi Samuel. Muito obrigado por participar do canal. Curioso. Merecia mais testes, só por diversão. Abraço da Equipe Canal Brincando com Ideias.
Colocar um valor inicial é uma prática recomendada, principalmente em C que não "limpa" a variável quando criada. Porém o compilador tem um bug mesmo e esse procedimento não é uma vacina, seria bom informar isso aí para os desenvolvedores da IDE.
Oi Johm. Muito obrigado por participar do canal e por seus comentários. Grande Abraço da Equipe Canal Brincando com Ideias.
Mestre não faltou informar o valor inicial para a saída ? No void setup
Oi Daniel.Muito Obrigado pela sua participação e pelo seu comentário. Gostaríamos de aproveitar a oportunidade para sugerir que assista a uma aula online gratuita. cursodearduino.net/aula-online
Deixe-nos um like e compartilhe nossos vídeos para que outras pessoas conheçam nosso trabalho.
Um forte abraço da Equipe Canal Brincando com Ideias.
Nosso canal no Telegram: t.me/canal_brincando_com_ideias
Nosso canal no Instagram instagram.com/brincandocomideias/
Não é um bug. Quando a variável é inicializada, não há garantia de que ela iniciará com zero, especialmente variáveis locais. E o programa utiliza o valor dela antes de ser atribuído valor. Assim, você pode pegar lixo. A lógica de funcionamento desse software, além de muito ineficiente, está errada. O problema não está no microcontrolador, nem no compilador, nem no software do arduino: está no programa e quem o escreveu. Falta experiência.
Oi Daniel. Muito obrigado por participar do canal. A questão não é a variável, e sim, porque o comando dentro do if foi executado, sem o if ter sido validado? Abraço da Equipe Canal Brincando com Ideias.
#define ledvm 2
#define bt1 8
void setup()
{
pinMode(ledvm, OUTPUT);
pinMode(bt1, INPUT_PULLUP);
}
void loop()
{
digitalWrite(ledvm, !digitalRead(bt1));
}
isso resolve!
Oi Tecno. Muito Obrigado pela sua participação e pelo comentário.
Você também pode contar com os seguintes cursos online:
Curso de Arduino para principiantes> cursodearduino.net/principiantes,
Curso de Arduino 2.0> cursodearduino.net
Curso de Arduino Avançado> cursodearduino.net/avancado
Além de todo o conteúdo organizado dos cursos, você Ainda conta com nosso whats app para interagir com a equipe de suporte que estará pronta para responder suas dúvidas com relação ao conteúdo das aulas.
Você também poderá participar do encontro semanal, via zoom, com o prof. Flavio, seus assistentes e os demais alunos onde você poderá tirar dúvidas, apresentar seus projetos, debater ideias e soluções e ainda bater um papo tecnológico onde todos aprendem muito.
Acesse nossas páginas para saber mais.
Deixe-nos um like e compartilhe nossos vídeos para que outras pessoas conheçam nosso trabalho.
Um forte abraço da Equipe Canal Brincando com Ideias.
Onde isso é bug? Estão tentando ler uma variável não inicializada e querem que o código invente um valor correto...
Realmente não é um bug, uma variável sem um valor inicial pode receber qualquer valor aleatório.
Oi Ivanildo. Muito obrigado por participar do canal. O problema não está na variável, e sim porque o comando dentro do if foi executado, sem o if ter sido validado? Abraço da Equipe Canal Brincando com Ideias.
Na minha opinião toda variável deve ser inicializada com um valor.
Oi Rafael. Muito Obrigado pela sua participação e pela opinião. Concordamos totalmente. Tanto que fizemos o vídeo para mostrar o que pode acontecer. Gostaríamos de aproveitar a oportunidade para sugerir que assista a uma aula online gratuita. cursodearduino.net/aula-online
Acompanhe nosso canal no Telegram: t.me/canal_brincando_com_ideias
Acompanhe nosso canal no Instagram instagram.com/brincandocomideias/
Deixe-nos um like e compartilhe nossos vídeos para que outras pessoas conheçam nosso trabalho.
Um forte abraço da Equipe Canal Brincando com Ideias.
@@BrincandocomIdeias concordo plenamente e até respondi a um comentário em que o autor defendia a implementação do arduino. Eu acho a plataforma incrível, mas bugs são sempre esperados e ainda bem que existem canais como o seu para ensinar como dribla-los enquanto não sai a correção. Nesse caso, a solução não irá impactar em nada quando a correção sair. Parabéns pelo canal.
*Simples, use um inseticida e prontinho!*
STONKS 📈
Oi Bribil. Muito obrigado pela sugestão. rsrs Quem dera fosse tão fácil. Abraço da Equipe Canal Brincando com Ideias.
Ao meu ver não é bug. E sim código de programação.
Oi Vitor. Muito obrigado por participar do canal. O problema não é a variável e sim, porque o comando dentro do if foi executado, sem o if ter sido validado? Abraço da Equipe Canal Brincando com Ideias.
Vamos usar outra porta pra ver se o bug continua! O pessoal não entendeu que o programa está entrando no if, portanto, não é lixo na memória. Grande abraço!!!!!
Oi Samir. Muito obrigado por participar do canal. Pois é.Acho que não entenderam mesmo esse ponto.Abraço da Equipe Canal Brincando com Ideias.
Não é BUG! na linha 15 do primeiro código está sendo atribuído o valor de 1 para a variável estadoLeds fora das chaves do if, sendo assim ele vai executar fora da verificação, me corrijam se eu estiver errado
Seu pensamento está equivocado
Quando se há somente 1 execução dentro do IF, ela pode ser colocada sem a necessidade das {}.
Estou impressionado com a quantidade de programadores que dizem não ser um bug do compilador. Será que não viram a atribuição 80 ser executada sem entrar na função?
Você viu o código que o seu compilador gerou? você conhece a especificação da linguagem? Estou impressionado com a quantidade de pessoas que dizem programadores de C e C++ e não conhececm a definição da linguagem e suas regras básicas.
A definição da linguagem diz claramente que acessar variáveis automáticas (ou locais) sem inicialização leva o programa a um estado indefinido. Logo, não existe garantia alguma que seu programa vai se comportador como você espera.
Impressiona também a quantidade de pessoas que acha que o compilador vai gerar o código exatamente como você quer, ele vai gerar um código que de o resultado que você espera, não como você digitou. Qualquer otimizador vai rapidamente eliminar essas variáveis pois são desnecessárias no código final e como temos uma variável não inicializada, o if vai para o espaço...
Veja aqui o código gerado por um compilador nesse caso: godbolt.org/z/7pZ-n_
Viu, nada de if... inicialize a variável, que muda completamente a geração de código.
Prezados, aqui esta o codigo gerado com otimizações ligadas, o compilador simplesmente remove o "if" pois o comportamento é totalmente indefinido: godbolt.org/z/7pZ-n_
Agora, quando você inicializa a variável, o if esta lá e funciona perfeitamente: godbolt.org/z/yWkqyx
Observem como muda completamente a geração do código com a inicialização da variável.
Portanto, não existe bug algum no arduino. Apenas um programa mal formado que leva a uma compilação com saída "indefinida" pela especificação da linguagem.
Oi /?Bruno. Muito obrigado. Abraço da Equipe Canal Brincando com Ideias.
isso não é um bug, isso é um erro de programação variáveis que não estão em methodo getter and setters precisa receber um valor! ele precisa receber um valor inicial
Um antigo professor sempre me dizia: “Se declarar uma variável, inicialize ela”. Acho q esses bugs fazem parte de qualquer linguagem de programação. Tô querendo fazer esse curso kkk
Oi Jailson. Muito obrigado por participar do canal. Seu professor está certíssimo. A questão do bug não foi a variável, e sim o porque de executar uma ação que está dentro do if sem ter entrado do if. Acompanhe nosso canal no o Instagram instagram.com/canalbrincandocomideias.
Deixe-nos um like e compartilhe nossos vídeos para que outras pessoas conheçam nosso trabalho.
Abraço da Equipe Canal Brincando com Ideias.
@@BrincandocomIdeias Pessoal, parabéns pelo canal e pela gentileza e humildade de compartilhar o conhecimento conosco. Em breve estarei com vcs no curso de Arduino. Abraços
eu ja tive problema assim
Oi Rodrigo. Muito obrigado por participar do canal. Acreditamos ser um problema de certa forma comum., apesar de se recomendar que os valores sejam atribuídos. Abraço da Equipe Canal Brincando com Ideias.
Boas práticas de programação, para evitar lixos de memória: ao criar uma variável, inicialize-a sempre com um valor definido!
(regra básica para evitar perder tempo procurando bug)
Oi Jonarnisseno. Muito obrigado por participar do canal e pela sua opinião. O fato ´´e o comando dentro do if, ter sido executado sem o if ser validado. Abraço da Equipe Canal Brincando com Ideias.
Pensei que estava falando de mim.kkkk
Oi Gideão. Muito obrigado por participar do canal. Não, mas passou perto. rsrs. Abraço da Equipe Canal Brincando com Ideias.
Obrigado pela resposta. Tenho interesse em transformar minha casa igual a casa do Toni Stark ( homem de ferro) será que o arduíno pode fazer isso?
Eu achando que fosse algo novo, sempre inicio com zero
Meu caro, isso não é um BUG do arduino como vc repetiu durabte os 12 minutos do vídeo. É simplesmente a maneira como a linguagem C funciona, se você não declarar um valor inicial para a variável, ela irá conter "lixo", informações que podem ter sido usadas como cache ou variáveis anteriores. Portanto, é um número diferente de 0. E é assim que o arduino irá tratar, como um valor equivalente a false. Por isso iniciou com a porta ligada.
Oi Gabriel. Muito obrigado por participar do canal e pela sua explicação. O problema não está na variável, e sim, porque o comando dentro do if foi executado, sem o if ter sido validado? Abraço da Equipe Canal Brincando com Ideias.
Tive este mesmo problema no TCC do curso, criei uma variavel para guardar os segundos e minutos e os segundos e já começava com 1.
Oi Junior. Muito obrigado por participar do canal e por compartilhar sua experiência. Agora achamos que o problema está resolvido. rsrs. Abraço da Equipe Canal Brincando com Ideias.
Eu não vi BUG.
...desculpe a opinião pessoal, mas é sim uma falha de programação. Uma variável é apenas a definição de um espaço onde SERÃO / PODERÃO SER armazenados valores, mas ela - a variável - não é por si mesma o valor. É como se houvéssemos apenas designado um espaço na gaveta onde guardaremos os lenços: Esse espaço pode conter lenços, mas não é ele mesmo um lenço.
Então fica óbvio, é sim uma falha na lógica de programação. Faltou um passo.
Resumindo:
A ATRIBUIÇÃO de um valor à uma variàvel NÃO É a mesma coisa que a DECLARAÇÃO de uma variável.
Oi José. Muito obrigado por participar do canal e pela sua opinião. A questão não é a variável, e sim, porque o comando dentro do if foi executado, sem o if ter sido validado? Abraço da Equipe Canal Brincando com Ideias.
like
Oi Gilbgomes. Muito obrigado. Abraço da Equipe Canal Brincando com Ideias.
Oudricanalarai
Boa noite professor obrigado pela homenagem kkkk estou muito fez em poder contribuir com o canal e está valendo a pela estudar abraço.
@@gideonalves5645 De nada :)
Para um circuito simples como esse, é desnecessário usar funções booleanas e variáveis desnecessárias.
2:24 "a logica ta certinha" Não está não.... Faltou digitar o valor ... Mas legal a criatividade do título do video... Me fez ficar curioso e assisiti o video...
Oi Cleyton. Muito obrigado por participar do canal. O bug não está na variável. O problema é que o comando dentro do if foi executado sem o if ter sido validado. Abraço da Equipe Canal Brincando com Ideias.
Flávio até o momento não ví nenhuma resposta da sua parte sobre os comentários dos colegas que provaram que isso não é um BUG. Você grava vários vídeos com excelente conteúdo mas tem que ser mais participativo nos comentários, eu mesmo já fiz algumas perguntas e até agora sem respostas. Dá uma atenção pro pessoal para o seu canal crescer ainda mais.
Oi Elias. Muito obrigado por participar do canal e pela sua observação. Note que todos~ comentários no canal são feitos no dia seguinte e normalmente procuramos responder todas as mensagens, exceto aquelas perguntas sem logica ou sem informação suficiente. do tipo "porque meu arduino não funciona?". Sem que o pro blema seja descrito, como dar uma resposta? Abraço da Equipe Canal Brincando com Ideias.
@@BrincandocomIdeias Diante disso pesquise minhas perguntas e veja se as mesmas tem lógica pra você, bem como o e-mail enviado verifique se o teor do mesmo é relevante pra você, no meu ver uma resposta mesmo que seja negativa é melhor do que ficar sem resposta.
Olá @Elias Pereira! Tudo bem? 😁
Sobre ser um bug ou não, nós podemos simplesmente separar a situação em duas formas de pensar:
A primeira é aproveitar a informação e aprender, investigar e se aprimorar
A segunda forma de pensar seria apenas discutir a classificação do evento e ficar parado onde está.
Cada um pode fazer a sua própria escolha 😁
Acredito que você não tenha notado anteriormente mas NÓS, entenda que a equipe não conta apenas com o professor Flávio, aqui da equipe do canal respondemos a grande maioria dos comentários, são mais de 260mil inscritos atualmente e tentamos sempre dar o máximo de atenção a todos vocês.
Assim como estamos respondendo a sua pergunta também respondemos de outros inscritos conforme conseguimos.
Infelizmente o tempo que temos durante o dia é fixo e todos os dias temos novos comentários, novos emails, novos vídeos para gravar, editar, planejar etc. então um ou outro comentário acaba ficando sem resposta. Note que isso é porque temos uma equipe, uma pessoa sozinha jamais conseguiria responder todas as centenas de emails e comentários diários 😁👍
Muito obrigado pela sua participação e pelo feedback, um forte abraço!
Att. Equipe do canal Brincando com ideias
eu sempre atribuo um valor inicial a uma variável
99% dos comentários mostram que as pessoas NÃO entenderam o vídeo direito.. o problema é que está sendo executado o comando dentro do IF sem que se entre no IF. É um bug do compilador. Qual compilador vc está usando? Aqui no GCC está perfeito, acho que isso aí é coisa do Ruindows.
O Título deveria ser mudado para "Encontramos um BUG no compilador do Ruindows". (não confundam Arduino IDE com Compilador C/C++)
Oi Johm. Muito obrigado por participar do canal e pela sua opinião. Abraço da Equipe Canal Brincando com Ideias.
Erro Clássico dos Iniciantes, Recomendo ver Resistor Pull Up e Pull Down
RESUMINDO estava programado errado e o arduino estava certo
Oi Gt3CaioBr. Muito obrigado pela sua participação.
Pode ser visto desta forma.
Se você deseja:
Avançar ainda mais no universo Arduino,
Ter acesso a um conteúdo organizado, que você pode acessar tanto pelo celular quanto pelo computador
Participar semanalmente do Encontro com os Alunos com o prof. Flávio, um espaço onde você poderá tirar dúvidas, apresentar seus projetos, debater ideias
e soluções e ainda bater um papo tecnológico expandindo seus horizontes,
Acesso a uma equipe preparada para tirar suas dúvidas enquanto estuda,
Acesse nossa página: brincandocomideias.com.br/#meus-cursos
E escolha o curso certo para você.
Não esqueça de deixar um Like.
Um forte abraço da Equipe do canal Brincando com Ideias.
Isso não é bug e sim erro de programação. Erro básico.
Oi Marcel. Muito obrigado por participar do canal. A questão não é a variável, e sim, porque o comando dentro do if foi executado, sem o if ter sido validado? Abraço da Equipe CanaCanal BrincandIdeias.
Caramba q bug grotesco, merece ser reportado pros desenvolvedores. No meu entendimento, no caso de uma variável local não ser inicializada, o máximo q poderia acontecer seria o surgimento de um valor "garbage" na posição de memória desta variável.
Edit: realmente, após a discussão, não creio que seja um bug, todavia é importante saber o porquê deste comportamento.
Os desenvolvedores vão responder educadamente (ou não), que não existe bug algum no arduino. Simplesmente acessar variável não inicializa em C é "undefined" e a partir deste ponto, o comportamento do programa pode ser qualquer um.
A única resposta válida para este tipo de report é "meu filho, vai aprender a programar primeiro"
Oi Julio. Muito obrigado por participar do canal. Realmente. Pretendemos informar sim, aos desenvolvedores. Abraço da Equipe Canal Brincando com Ideias.
Ceticismo.net obrigado por me lembrar q não sei tudo, sr. Cético
Bruno Sanches então, referindo ao outro post q estamos conversando, nos PICs isso não acontece, pq as variáveis locais são salvas na mesma parte da RAM q as demais. Logo, acessar uma var não inicializada retornaria apenas lixo e não teria este comportamento undefined. Meu erro foi assumir q a arquitetura dos AVRs é igual kkk. Vou olhar o datasheet do 328p qnd sobrar um tempo.
Cuidado !!! eu que o digo.
Noobies everywhere...