Go Down

Topic: Perguntas de iniciante (Read 3747 times) previous topic - next topic

Oenning

Olá, estou começando a brincar com o Arduino e fiquei com algumas dúvidas.

1) Qual a maneira correta de "parar" o Arduino? Explico melhor: Estou com ele conectado no USB executando um determinado código em um determinado circuito. Ai eu preciso adicionar alguns componentes e alterar um pouco do código. Atualmente o que eu faço é "desplugar" a USB do notebook. Faço as alterações e "plugo" novamente. Está correto isso? Não tem a possibilidade de estragar algo?

2) Existe algum limite de upload para Arduino? Eu li que as memórias EEPROM suportam no máximo 100.000 remoção/escrita e leitura infinita. Isso se aplica ao Arduino?

3) Conectei um LED no oin 10, fiz o digitalWrite(10, HIHG) e não setei o pinMode(10, OUTPUT). Mesmo assim, o LED acendeu, bem fraco, mas acendeu. Quando coloquei o código pinMode(10, OUTPUT), ele continuou aceso, mas dessa vez, bem mais forte (conforme o esperado). A questão é, por que eu ele acendeu mesmo não setando o modo como OUTPUT?

trunet


1) Qual a maneira correta de "parar" o Arduino? Explico melhor: Estou com ele conectado no USB executando um determinado código em um determinado circuito. Ai eu preciso adicionar alguns componentes e alterar um pouco do código. Atualmente o que eu faço é "desplugar" a USB do notebook. Faço as alterações e "plugo" novamente. Está correto isso? Não tem a possibilidade de estragar algo?

É isso mesmo. O microcrontrolador foi feito para funcionar desta maneira. tudo que está no LOOP() roda para sempre e pronto.


2) Existe algum limite de upload para Arduino? Eu li que as memórias EEPROM suportam no máximo 100.000 remoção/escrita e leitura infinita. Isso se aplica ao Arduino?

Sim, existe. O limite de tamanho do programa compilado no uno é ~30k e no mega2560 é ~254k. (os 2k é por causa do bootloader que usa memória flash). Quanto ao limite de escrita/remoção deve ser por volta disso mesmo.


3) Conectei um LED no oin 10, fiz o digitalWrite(10, HIHG) e não setei o pinMode(10, OUTPUT). Mesmo assim, o LED acendeu, bem fraco, mas acendeu. Quando coloquei o código pinMode(10, OUTPUT), ele continuou aceso, mas dessa vez, bem mais forte (conforme o esperado). A questão é, por que eu ele acendeu mesmo não setando o modo como OUTPUT?

Não sei precisar isso mas provavelmente deve ser por causa do resistor pull-up do pino no uC.

fabiosegundo

Olá pessoal, boa noite!
Estou querendo fazer um projeto de monitoria de canais, TV.
onde queria criar um arduino que identificasse um canal fora do ar, ou tela black através do receptor de tv. (decoder).
tem como??

Claudemiro

Olá pesooal, bom dia !!!!

Por favor me ajudem !!!!!! preciso usar os comandos if e while.

Preciso criar bum programa com 3 botões e 1 led.
Quando o botão 1 for pressionado o programa deverá armazenar a quantidade de vezes que foi pressionado, e quando o botão "ENTER" (3) for pressionado, o programa deverá acender e apagar o led a quantidade de vezes que o botão 1 foi pressionado.
Caso a pessoa deseje diminuir a quantidade de vezes que o led piscará, deverá utilizar o botão 2 (antes de apertar o ENTER).

Lidiane

Sou iniciante na programação de arduino e estou precisando comunicar um programa com uma página HTML, minha dúvida é como montar o código que irá criar um botão na página web que quando pressionado irá ligar uma saída do arduino.

Wiring

#5
Oct 17, 2016, 09:20 pm Last Edit: Oct 17, 2016, 09:31 pm by Wiring
Olá pesooal, bom dia !!!!

Por favor me ajudem !!!!!! preciso usar os comandos if e while.

Preciso criar bum programa com 3 botões e 1 led.
Quando o botão 1 for pressionado o programa deverá armazenar a quantidade de vezes que foi pressionado, e quando o botão "ENTER" (3) for pressionado, o programa deverá acender e apagar o led a quantidade de vezes que o botão 1 foi pressionado.
Caso a pessoa deseje diminuir a quantidade de vezes que o led piscará, deverá utilizar o botão 2 (antes de apertar o ENTER).

Traquilo Claudemiro.

Faz assim que não tem erro:

int conta=0;   // armazena o numero de vezes que o botão é pressionado
int i;

void loop () {

if (!botao1)
{
     delay(300);
     conta++;  // Se o botao1 for pressionado incrementa a variável conta
}

if (!botao2)
{
     delay(300);
     conta--;    // Se o botao2 for pressionado decrementa a variável conta

if (!botao3)
{
     delay(300);
     for(i=0;i<conta;i++)
     {
      digitalWrite(led,HIGH);
      delay(500);
      digitalWrite(led,LOW);
      delay(500);
     }
    conta=0;
}

IMPORTANTE: O delay de 300ms é importante por causa do efeito debounce, senão o programa vai interpretar que vc apertou os botões várias vezes

Bom claro que ainda faltam declarar e configurar os botões, escrever as linhas de comando de leitura dos botões etc...mais ai acredito que vc já sabe como fazer por isso não coloquei

tecdiego

Olá pesooal, bom dia !!!!

Por favor me ajudem !!!!!! preciso usar os comandos if e while.

Preciso criar bum programa com 3 botões e 1 led.
Quando o botão 1 for pressionado o programa deverá armazenar a quantidade de vezes que foi pressionado, e quando o botão "ENTER" (3) for pressionado, o programa deverá acender e apagar o led a quantidade de vezes que o botão 1 foi pressionado.
Caso a pessoa deseje diminuir a quantidade de vezes que o led piscará, deverá utilizar o botão 2 (antes de apertar o ENTER).

Faltam muitas informações, como por exemplo, quanto tempo o led deve permanecer aceso? A necessidade de colocar limite?

Code: [Select]
int numeroPiscadas = 0;

botaoAumenta = 3;

botaoDiminui = 4;

piscaLed = 5;

led = 6;

tempoPisca = 100;

boolean verificaBotaoUp = false;

boolean verificaBotaoDown = false;


void setup(){

  pinMode(botaoAumenta,INPUT);

  pinMode(botaoDiminui,INPUT);

  pinMode(piscaLed, INPUT);

  pinMode(led, OUTPUT);

}

void loop(){

  if((digitalRead(botaoAumenta)== HIGH) && (verificaBotaoUp == false)){
   
      numeroPiscada++;

      verificaBotao = true;

  }  else {
 
      verificabotaoUP = false;

  }


  if((digitalRead(botaoDiminiu)== HIGH) && (verificaBotaoDown == false)){

     if(numeroPiscada > 0) {

         numeroPiscada--;

     }

     verificaBotaoDown = true;

  } else {

     verificaBotaoDown = false;

  }

  if(digitalRead(botaoAumenta)== HIGH){

     for(int i =0; i<=numeroPiscadas; i++) {

        digitalWrite(led,HIGH);

        delay(tempoPisca/2);
       
        digitalWrite(led,LOW);

        delay(tempoPisca/2);

     }


}

tecdiego

Olá pesooal, bom dia !!!!

Por favor me ajudem !!!!!! preciso usar os comandos if e while.

Preciso criar bum programa com 3 botões e 1 led.
Quando o botão 1 for pressionado o programa deverá armazenar a quantidade de vezes que foi pressionado, e quando o botão "ENTER" (3) for pressionado, o programa deverá acender e apagar o led a quantidade de vezes que o botão 1 foi pressionado.
Caso a pessoa deseje diminuir a quantidade de vezes que o led piscará, deverá utilizar o botão 2 (antes de apertar o ENTER).

Faltou um pedaço do código, segue abaixo corrigido.
Olá pesooal, bom dia !!!!

Por favor me ajudem !!!!!! preciso usar os comandos if e while.

Preciso criar bum programa com 3 botões e 1 led.
Quando o botão 1 for pressionado o programa deverá armazenar a quantidade de vezes que foi pressionado, e quando o botão "ENTER" (3) for pressionado, o programa deverá acender e apagar o led a quantidade de vezes que o botão 1 foi pressionado.
Caso a pessoa deseje diminuir a quantidade de vezes que o led piscará, deverá utilizar o botão 2 (antes de apertar o ENTER).

Faltam muitas informações, como por exemplo, quanto tempo o led deve permanecer aceso? A necessidade de colocar limite?

Code: [Select]
int numeroPiscadas = 0;

botaoAumenta = 3;

botaoDiminui = 4;

piscaLed = 5;

led = 6;

tempoPisca = 100;

boolean verificaBotaoUp = false;

boolean verificaBotaoDown = false;


void setup(){

  pinMode(botaoAumenta,INPUT);

  pinMode(botaoDiminui,INPUT);

  pinMode(piscaLed, INPUT);

  pinMode(led, OUTPUT);

}

void loop(){

  if((digitalRead(botaoAumenta)== HIGH) && (verificaBotaoUp == false)){
  
      numeroPiscada++;

      verificaBotao = true;

  }  else {
 
      verificabotaoUP = false;

  }


  if((digitalRead(botaoDiminiu)== HIGH) && (verificaBotaoDown == false)){

     if(numeroPiscada > 0) {

         numeroPiscada--;

     }

     verificaBotaoDown = true;

  } else {

     verificaBotaoDown = false;

  }

  if(digitalRead(botaoAumenta)== HIGH){

     for(int i =0; i<=numeroPiscadas; i++) {

        digitalWrite(led,HIGH);

        delay(tempoPisca/2);
        
        digitalWrite(led,LOW);

        delay(tempoPisca/2);

     } //FALTOU ESSA PARTE DO CÓDIGO

   numeroPiscadas = 0;
   } // ATÉ AQUI


}

Daniloccq2017

Boa noite pessoal, estou desenvolvendo um projeto na qual preciso capturar um pico de um sinal analógico e o tempo desse pico. O sinal começa em zero e se altera no espaço de tempo de 0 a 200ms, com amplitude de aproximadamente 30mA, qual comando uso para ter esse valor?

leandro1301

Olá, estou começando a brincar com o Arduino e fiquei com algumas dúvidas.

1) Qual a maneira correta de "parar" o Arduino? Explico melhor: Estou com ele conectado no USB executando um determinado código em um determinado circuito. Ai eu preciso adicionar alguns componentes e alterar um pouco do código. Atualmente o que eu faço é "desplugar" a USB do notebook. Faço as alterações e "plugo" novamente. Está correto isso? Não tem a possibilidade de estragar algo?
Caro amigo, não há nescidade de desplugar e plugar o arduino no pc toda vez que fizer alteração no código, apenas em caso de prototipagem é aconselhável como boas maneira da eletrônica. E para não estragar o arduino
Quote
2) Existe algum limite de upload para Arduino? Eu li que as memórias EEPROM suportam no máximo 100.000 remoção/escrita e leitura infinita. Isso se aplica ao Arduino?
Limites de upload's? Não único limite é quanto a memoria(colega acima já explicou isso acima) e da vida útil do seu Arduíno.
Quote
3) Conectei um LED no oin 10, fiz o digitalWrite(10, HIHG) e não setei o pinMode(10, OUTPUT). Mesmo assim, o LED acendeu, bem fraco, mas acendeu. Quando coloquei o código pinMode(10, OUTPUT), ele continuou aceso, mas dessa vez, bem mais forte (conforme o esperado). A questão é, por que eu ele acendeu mesmo não setando o modo como OUTPUT?
Isso acontece com qual quer CI, é chamado de estado flutuante ele está ocilando sua porta com energia alta e baixa para nois o efeito em um LED é a luminosidade. A chamada da função pinMode apenas irá fazer com que o Arduíno possa distinguir o pino para uso se PULL UP ou PULL DOWN já que se trata de microcontrolador. Caso ainda esteja com dúvidas quanto a isso sugiro um que leia um livro de eletrônica digital.

BrunoEV

Como faço para um motor servo  ir 0° até 90° a cada 12 horas sem parar? O objetivo é a rotação do servo servir como uma cancela que a cada 12 horas abrirá espaço para passagem de um um água.

ocsav


Olá, estou começando a brincar com o Arduino e fiquei com algumas dúvidas.

1) Qual a maneira correta de "parar" o Arduino? Explico melhor: Estou com ele conectado no USB executando um determinado código em um determinado circuito. Ai eu preciso adicionar alguns componentes e alterar um pouco do código. Atualmente o que eu faço é "desplugar" a USB do notebook. Faço as alterações e "plugo" novamente. Está correto isso? Não tem a possibilidade de estragar algo?
Não é necessário desligar a ficha usb para "parar" o Arduino. O IDE depois de compilar o código faz um reset ao Arduino seguido do upload do novo codigo. Esta função é feita pelo "firmware" do Arduino, também conhecido por bootloader que aceita o carregamento de um novo programa nos segundos iniciais (julgo que 10 s) após o reboot.
Estar sempre a ligar e desligar a ficha USB pode eventualmente conduzir a problemas de contacto.
Quote
2) Existe algum limite de upload para Arduino? Eu li que as memórias EEPROM suportam no máximo 100.000 remoção/escrita e leitura infinita. Isso se aplica ao Arduino?
Sim, esses valores aplicam-se aos arduinos. Os valores exatos tem que ser consultados nas datasheet da Atmel para o microcontrolador em particular. Para alem do numero de ciclos de escrita também é interessante saber o tempo de retenção do conteúdo da flash, que não é eterno.
Quote
3) Conectei um LED no oin 10, fiz o digitalWrite(10, HIHG) e não setei o pinMode(10, OUTPUT). Mesmo assim, o LED acendeu, bem fraco, mas acendeu. Quando coloquei o código pinMode(10, OUTPUT), ele continuou aceso, mas dessa vez, bem mais forte (conforme o esperado). A questão é, por que eu ele acendeu mesmo não setando o modo como OUTPUT?
Se não for configurado com o pinMode o arduino terá uma resistência interna para os 5 V (vcc) de um valor relativamente alto, não me recordo se é 1K ou 10K.
Mas atenção que não se deve configurar o pino para OUTPUT e ligar diretamente o led, porque o arduino vai tentar passar toda a corrente que o led pedir. Se for um led pequeno é provavel que queime o led primeiro, mas se for um led capaz de pedir mais de 40 mA provavelmente vai queimar primeiro o arduino.
Portanto, a maneira correta de ligar um led diretamente a um pino é colocar o pinMode(x, OUTPUT) e colocar entre o pino e o positivo do led uma resistência de pelo menos 220ohm, isso vai limitar a corrente a valores seguros para o led e para o arduino.

lidiagsc9

Alguém poderia me ajudar?
Estou fazendo um projeto de reaproveitamento da água da máquina de lavar, porém esta máquina esta sendo simulada com um motor de uma máquina antiga.O motor no começo dos testes funcionou normal, porém agora não quis mais funcionar, e a bomba de água funciona, porém não esta puxando a água. Vou mandar o código, se alguém puder me ajuda. Muito obrigado.
const int SNA = 7; // SENSOR DE NIVEL ALTO
const int SNB = 6; // SENSOR DE NIVEL BAIXO
const int releBomba = 2; // RELE QUE LIGA A BOMBA
int estadoSNA = 0; //VARIÁVEL QUE ARMAZENA O VALOR LIDO NA PORTA DIGITAL ( 0 = desligado 1 = ligado)
int estadoSNB = 0; //VARIÁVEL QUE ARMAZENA O VALOR LIDO NA PORTA DIGITAL
int estadoRele = 0; //VARIÁVEL QUE ARMAZENA O VALOR LIDO NA PORTA DIGITAL
// OBS: ( 0 = desligado 1 = ligado) Sensor Alto = 0 e baixo = 1;
void setup()
{
pinMode(SNA, INPUT); //DEFINE A PORTA COMO ENTRADA
pinMode(SNB, INPUT); //DEFINE A PORTA COMO ENTRADA
pinMode(releBomba, OUTPUT); //DEFINE A PORTA COMO SAÍDA
}
void loop(){
estadoSNA = digitalRead(SNA); // LÊ O VALOR NA PORTA DIGITAL
estadoSNB = digitalRead(SNB);
if((estadoSNA == 1) && (estadoSNB == 1) && (estadoRele == 0)){ //SE O VALOR LIDO FOR IGUAL A 0, FAZ
digitalWrite(releBomba, LOW); // liga a bomba (está invertido o estado)
estadoRele = 1; // relé ligado
}
if ((estadoSNA == 1) && (estadoSNB == 0) && (estadoRele == 1)){ //SE O VALOR LIDO FOR IGUAL A 0, FAZ
digitalWrite(releBomba, LOW); // liga a bomba (está invertido o estado)
estadoRele = 1; // relé ligado

}
if((estadoSNA == 0) && (estadoSNB == 0) && (estadoRele == 1)){ //SE O VALOR LIDO FOR IGUAL A 0, FAZ
digitalWrite(releBomba, HIGH); // desliga a bomba (está invertido o estado)
estadoRele = 0; // relé desligado
}
if((estadoSNA == 1) && (estadoSNB == 0) && (estadoRele == 0)){ //SE O VALOR LIDO FOR IGUAL A 0, FAZ
digitalWrite(releBomba, HIGH); // desliga a bomba (está invertido o estado)
estadoRele = 0; // relé desligado
}
if((estadoSNA == 0) && (estadoSNB == 1) && (estadoRele == 0 || estadoRele == 1)){ //SE O VALOR LIDO FOR IGUAL A 0, FAZ
digitalWrite(releBomba, HIGH); // desliga a bomba (está invertido o estado)
estadoRele = 0; // relé desligado
}
}

tecdiego

Caro amigo, você diz que a bomba liga mas não puxa a água, isso pode ser problema na bomba.
Outra coisa, você já fez o teste em uma protoboard? um teste das condições de acionamento? verificar se o programa está agindo conforme o esperado?
Depois posta a resposta aqui!

Go Up