Estou tentando fazer 5 leds se mover para esquerda e para direita com dois botões, eu consegui fazer os leds acender e apagar o anterior com um botão, porém estou com dificuldades de introduzir o segundo botão.
int l1 = 4;
int l2 = 5;
int l3 = 6;
int l4 = 7;
int l5 = 8;
#define botao 3
#define botao2 2
int estadoBotao;
int estadoBotao2;
int fase;
void setup() {
pinMode (l1, OUTPUT);
pinMode (l2, OUTPUT);
pinMode (l3, OUTPUT);
pinMode (l4, OUTPUT);
pinMode (l5, OUTPUT);
pinMode (botao, OUTPUT);
estadoBotao =1 ;
estadoBotao2 =0 ;
}
void loop() {
estadoBotao = digitalRead (botao);
estadoBotao2 = digitalRead (botao2);
if (estadoBotao == HIGH){
if (fase < 5){
fase ++;
}
else {
fase = 1;
}
}
if (estadoBotao2==LOW) {
if (fase<5) { fase --; } } if (fase == 1){ digitalWrite (l1, HIGH); digitalWrite (l2, LOW); digitalWrite (l3, LOW); digitalWrite (l4, LOW); digitalWrite (l5, LOW); } if (fase == 2){ digitalWrite (l1, LOW); digitalWrite (l2, HIGH); digitalWrite (l3, LOW); digitalWrite (l4, LOW); digitalWrite (l5, LOW); } if (fase == 3){ digitalWrite (l1, LOW); digitalWrite (l2, LOW); digitalWrite (l3, HIGH); digitalWrite (l4, LOW); digitalWrite (l5, LOW); } if (fase == 4){ digitalWrite (l1, LOW); digitalWrite (l2, LOW); digitalWrite (l3, LOW); digitalWrite (l4, HIGH); digitalWrite (l5, LOW); } if (fase == 5){ digitalWrite (l1, LOW); digitalWrite (l2, LOW); digitalWrite (l3, LOW); digitalWrite (l4, LOW); digitalWrite (l5, HIGH); } delay (150); }
Tags:
Boa noite! voce chegou a testar o codigo que o colega Yuri Borges Nogueira te indicou no topico que voce fez , avancar e retornar com dois botoes, la tem o site onde tem o codigo , caso queira outro exemplo esta em anexo,..
tem tambem o codigo do colega Yuri Borges Nogueira com o esquema de montagem em anexo,..
Ola....
Liguei 12 leds nas portas do arduino uno (2 a 12) e fiz varios efeitos.
Não repare na maneira como foi escrito. Deve ter até alguns erros.(É que estou brincando com arduino a pouco tempo).
Nem sei se vai te servir,.. Um dos efeitos se der uma mudada faz o que voce quer.
int intervalo = 3;
int aceleracao = 0;
int Min = 0;
int Max = 10;
void setup() {
Serial.begin(9600);
for (int pino = 2; pino <= 13; pino = pino + 1) {
pinMode(pino, OUTPUT);
}
}
void loop() {
aceleracao = 0;
for (int solo = Min ; solo <= Max; solo = solo + 1) {
aceleracao = aceleracao + intervalo;
for (int pisca = 2; pisca <= 14; pisca = pisca + 1) {
digitalWrite(pisca, HIGH);
delay(aceleracao);
digitalWrite(pisca, LOW);
}
}
aceleracao = 33;
for (int solo = Min ; solo <= Max; solo = solo + 1) {
aceleracao = aceleracao - intervalo;
for (int pisca = 14; pisca >= 2; pisca = pisca - 1) {
digitalWrite(pisca, HIGH);
delay(aceleracao);
digitalWrite(pisca, LOW);
}
}
aceleracao = 0;
for (int solo = Min ; solo <= Max; solo = solo + 1) {
aceleracao = aceleracao + intervalo;
for (int pisca = 2; pisca <= 14; pisca = pisca + 2) {
digitalWrite(pisca, HIGH);
delay(aceleracao);
digitalWrite(pisca, LOW);
}
}
aceleracao = 33;
for (int solo = Min ; solo <= Max; solo = solo + 1) {
aceleracao = aceleracao - intervalo;
for (int pisca = 14; pisca >= 2; pisca = pisca - 2) {
digitalWrite(pisca, HIGH);
delay(aceleracao);
digitalWrite(pisca, LOW);
}
}
aceleracao = 0;
for (int solo = Min ; solo <= Max; solo = solo + 1) {
aceleracao = aceleracao + intervalo;
for (int pisca = 1; pisca <= 14; pisca = pisca + 2) {
digitalWrite(pisca, HIGH);
delay(aceleracao);
digitalWrite(pisca, LOW);
}
}
aceleracao = 33;
//Serial.println(aceleracao);
for (int solo = Min ; solo <= Max; solo = solo + 1) {
aceleracao = aceleracao - intervalo;
for (int pisca = 14; pisca >= 1; pisca = pisca - 2) {
digitalWrite(pisca, HIGH);
delay(aceleracao);
digitalWrite(pisca, LOW);
}
}
aceleracao = 50;
for (int pisca = 0; pisca < 100; pisca = pisca + 1) {
int aleatorio = random(2, 14);
digitalWrite(aleatorio, HIGH);
delay(aceleracao);
digitalWrite(aleatorio, LOW);
}
aceleracao = 300;
for (int pisca = 0; pisca < 10; pisca = pisca + 1) {
int aleatorio = random(3);
if (aleatorio == 0) {
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
Serial.println(aleatorio);
delay(aceleracao);
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
}
if (aleatorio == 1) {
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
delay(aceleracao);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
}
if (aleatorio == 2) {
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
digitalWrite(12, HIGH);
digitalWrite(13, HIGH);
delay(aceleracao);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
digitalWrite(13, LOW);
}
}
int diminui = 13;
for (int solo = 0 ; solo <= 13; solo = solo + 1) {
for (int pisca = 2; pisca <= diminui; pisca = pisca + 1) {
digitalWrite(pisca, HIGH);
delay(100);
digitalWrite(pisca, LOW);
}
digitalWrite(diminui, HIGH);
diminui = diminui - 1;
}
int diminuii = 1;
for (int solo = 0 ; solo <= 13; solo = solo + 1) {
for (int pisca = 13; pisca >= diminuii; pisca = pisca - 1) {
digitalWrite(pisca, HIGH);
delay(100);
digitalWrite(pisca, LOW);
}
digitalWrite(diminuii, HIGH);
diminuii = diminuii + 1;
Serial.println(diminuii);
}
for(int x=Min; x<Max; x=x+1){
digitalWrite(2, HIGH);
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
digitalWrite(5, LOW);
digitalWrite(6, HIGH);
digitalWrite(7, LOW);
digitalWrite(8, HIGH);
digitalWrite(9, LOW);
digitalWrite(10, HIGH);
digitalWrite(11, LOW);
digitalWrite(12, HIGH);
digitalWrite(13, LOW);
delay(100);
digitalWrite(2, LOW);
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
digitalWrite(5, HIGH);
digitalWrite(6, LOW);
digitalWrite(7, HIGH);
digitalWrite(8, LOW);
digitalWrite(9, HIGH);
digitalWrite(10, LOW);
digitalWrite(11, HIGH);
digitalWrite(12, LOW);
digitalWrite(13, HIGH);
delay(100);
}
for(int x=2; x<=6; x=x+1){
int y=14;
y=y-1;
digitalWrite(x,HIGH);
digitalWrite(y,HIGH);
}
digitalWrite(7,HIGH);
for (int m = 0; m <= 10; m = m + 1) {
int y = 14;
for (int x = 2; x <= 7; x = x + 1) {
y = y - 1;
digitalWrite(x, HIGH);
digitalWrite(y, HIGH);
delay(50);
}
digitalWrite(8, HIGH);
int p = 7;
for (int x = 7; x >= 2; x = x - 1) {
p = p + 1;
//Serial.println(y);
digitalWrite(x, LOW);
digitalWrite(p, LOW);
delay(50);
}
digitalWrite(7, LOW);
}
}
Olá Lucas,
Não testei o código mas acredito que o problema está nessa lógica (causando confusão na execução)...
"if (fase < 5){
fase ++;
}
else {
fase = 1;
}
}
if (estadoBotao2==LOW) {
if (fase<5) { fase --; }"
O valor de "fase" aumenta por causa do primeiro "if" mas logo em seguida, ao soltar o botão, esse valor diminui. se não pressionar nada, ficará menor que 1...
Dá uma verificada nesse trecho do código
Ja consegui arrumar o código, obrigado.
Poderia me ajudar com esse código? Eu consigo acender os leds da porta 0 a 6, mas eu queria desponibilizar as portas de 2 a 10, o que devo mudar no código? mexi nos hexadecimais, mas não consegui muita coisa.
Se poder me ajudar agradeço.
#define botao1 12
#define botao2 13
void led();
int desloca = 0x01;
void setup() {
// Todas as portas do 0 até a 7 são saidas
for(short i=0x00;i<0x20;i++) pinMode(i, OUTPUT);
pinMode(12, INPUT_PULLUP);
pinMode(13, INPUT_PULLUP);
}
void loop() {
PORTD = desloca;
led();
}
void led()
{
if(!digitalRead(botao1))
{
delay(500);
desloca = desloca 1;
if(desloca > 0x20) desloca = 0x00;
}
if(!digitalRead(botao2))
{
delay(500);
desloca = desloca >> 1;
if(desloca == 0x00) desloca = 0x20;
}
}
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por