#include <SoftwareSerial.h>

/*
DIAL_LUZ
SequenciaL de 16 LEDs que indica o nivel de luminosidade do ambiente.

O próximo passo é otimizar o código, vou fazer umas alteraćões no cabo pra ligar os pinos na pesma sequencia dos LEDs, e depois usar laćo FOR pra otimizar o código.
This example code is in the public domain.
*/

void setup()
{
pinMode(13, OUTPUT);
int i;
//declara i como um inteiro
for (i=30;i<=45;i++)
//para i=30 ate i<=45, some 1
{
pinMode(i, OUTPUT);
//declara pino i como saida
}
//declara cada pino como saida
Serial.begin(9600);
// turn on LED to signal the start of the calibration period
}

void loop()
{
int x = 100;
int y = 10;
//declara o tempo de delay
Serial.println(analogRead(A0));

if (analogRead(A0)>=1 && analogRead(A0)<=64)
{
digitalWrite(30, HIGH);
digitalWrite(32, LOW);
digitalWrite(34, LOW);
digitalWrite(36, LOW);
digitalWrite(38, LOW);
digitalWrite(40, LOW);
digitalWrite(42, LOW);
digitalWrite(44, LOW);
digitalWrite(31, LOW);
digitalWrite(33, LOW);
digitalWrite(35, LOW);
digitalWrite(37, LOW);
digitalWrite(39, LOW);
digitalWrite(41, LOW);
digitalWrite(43, LOW);
digitalWrite(45, LOW);
delay(x);
}
else if (analogRead(A0) && analogRead(A0)<=128)
{
digitalWrite(30, HIGH);
digitalWrite(32, HIGH);
digitalWrite(34, LOW);
digitalWrite(36, LOW);
digitalWrite(38, LOW);
digitalWrite(40, LOW);
digitalWrite(42, LOW);
digitalWrite(44, LOW);
digitalWrite(31, LOW);
digitalWrite(33, LOW);
digitalWrite(35, LOW);
digitalWrite(37, LOW);
digitalWrite(39, LOW);
digitalWrite(41, LOW);
digitalWrite(43, LOW);
digitalWrite(45, LOW);
delay(x);
}
else if (analogRead(A0)>=129 && analogRead(A0)<=192)
{
digitalWrite(30, HIGH);
digitalWrite(32, HIGH);
digitalWrite(34, HIGH);
digitalWrite(36, LOW);
digitalWrite(38, LOW);
digitalWrite(40, LOW);
digitalWrite(42, LOW);
digitalWrite(44, LOW);
digitalWrite(31, LOW);
digitalWrite(33, LOW);
digitalWrite(35, LOW);
digitalWrite(37, LOW);
digitalWrite(39, LOW);
digitalWrite(41, LOW);
digitalWrite(43, LOW);
digitalWrite(45, LOW);
delay(x);
}
else if (analogRead(A0)>=193 && analogRead(A0)<=256)
{
digitalWrite(30, HIGH);
digitalWrite(32, HIGH);
digitalWrite(34, HIGH);
digitalWrite(36, HIGH);
digitalWrite(38, LOW);
digitalWrite(40, LOW);
digitalWrite(42, LOW);
digitalWrite(44, LOW);
digitalWrite(31, LOW);
digitalWrite(33, LOW);
digitalWrite(35, LOW);
digitalWrite(37, LOW);
digitalWrite(39, LOW);
digitalWrite(41, LOW);
digitalWrite(43, LOW);
digitalWrite(45, LOW);
delay(x);
}
else if (analogRead(A0)>=257 && analogRead(A0)<=320)
{
digitalWrite(30, HIGH);
digitalWrite(32, HIGH);
digitalWrite(34, HIGH);
digitalWrite(36, HIGH);
digitalWrite(38, HIGH);
digitalWrite(40, LOW);
digitalWrite(42, LOW);
digitalWrite(44, LOW);
digitalWrite(31, LOW);
digitalWrite(33, LOW);
digitalWrite(35, LOW);
digitalWrite(37, LOW);
digitalWrite(39, LOW);
digitalWrite(41, LOW);
digitalWrite(43, LOW);
digitalWrite(45, LOW);
delay(x);
}
else if (analogRead(A0)>=321 && analogRead(A0)<=384)
{
digitalWrite(30, HIGH);
digitalWrite(32, HIGH);
digitalWrite(34, HIGH);
digitalWrite(36, HIGH);
digitalWrite(38, HIGH);
digitalWrite(40, HIGH);
digitalWrite(42, LOW);
digitalWrite(44, LOW);
digitalWrite(31, LOW);
digitalWrite(33, LOW);
digitalWrite(35, LOW);
digitalWrite(37, LOW);
digitalWrite(39, LOW);
digitalWrite(41, LOW);
digitalWrite(43, LOW);
digitalWrite(45, LOW);
delay(x);
}
else if (analogRead(A0)>=385 && analogRead(A0)<=448)
{
digitalWrite(30, HIGH);
digitalWrite(32, HIGH);
digitalWrite(34, HIGH);
digitalWrite(36, HIGH);
digitalWrite(38, HIGH);
digitalWrite(40, HIGH);
digitalWrite(42, HIGH);
digitalWrite(44, LOW);
digitalWrite(31, LOW);
digitalWrite(33, LOW);
digitalWrite(35, LOW);
digitalWrite(37, LOW);
digitalWrite(39, LOW);
digitalWrite(41, LOW);
digitalWrite(43, LOW);
digitalWrite(45, LOW);
delay(x);
}
else if (analogRead(A0)>=449 && analogRead(A0)<=512)
{
digitalWrite(30, HIGH);
digitalWrite(32, HIGH);
digitalWrite(34, HIGH);
digitalWrite(36, HIGH);
digitalWrite(38, HIGH);
digitalWrite(40, HIGH);
digitalWrite(42, HIGH);
digitalWrite(44, HIGH);
digitalWrite(31, LOW);
digitalWrite(33, LOW);
digitalWrite(35, LOW);
digitalWrite(37, LOW);
digitalWrite(39, LOW);
digitalWrite(41, LOW);
digitalWrite(43, LOW);
digitalWrite(45, LOW);
delay(x);
}
else if (analogRead(A0)>=513 && analogRead(A0)<=576)
{
digitalWrite(30, HIGH);
digitalWrite(32, HIGH);
digitalWrite(34, HIGH);
digitalWrite(36, HIGH);
digitalWrite(38, HIGH);
digitalWrite(40, HIGH);
digitalWrite(42, HIGH);
digitalWrite(44, HIGH);
digitalWrite(31, HIGH);
digitalWrite(33, LOW);
digitalWrite(35, LOW);
digitalWrite(37, LOW);
digitalWrite(39, LOW);
digitalWrite(41, LOW);
digitalWrite(43, LOW);
digitalWrite(45, LOW);
delay(x);
}
else if (analogRead(A0)>=577 && analogRead(A0)<=640)
{
digitalWrite(30, HIGH);
digitalWrite(32, HIGH);
digitalWrite(34, HIGH);
digitalWrite(36, HIGH);
digitalWrite(38, HIGH);
digitalWrite(40, HIGH);
digitalWrite(42, HIGH);
digitalWrite(44, HIGH);
digitalWrite(31, HIGH);
digitalWrite(33, HIGH);
digitalWrite(35, LOW);
digitalWrite(37, LOW);
digitalWrite(39, LOW);
digitalWrite(41, LOW);
digitalWrite(43, LOW);
digitalWrite(45, LOW);
delay(x);
}
else if (analogRead(A0)>=641 && analogRead(A0)<=704)
{
digitalWrite(30, HIGH);
digitalWrite(32, HIGH);
digitalWrite(34, HIGH);
digitalWrite(36, HIGH);
digitalWrite(38, HIGH);
digitalWrite(40, HIGH);
digitalWrite(42, HIGH);
digitalWrite(44, HIGH);
digitalWrite(31, HIGH);
digitalWrite(33, HIGH);
digitalWrite(35, HIGH);
digitalWrite(37, LOW);
digitalWrite(39, LOW);
digitalWrite(41, LOW);
digitalWrite(43, LOW);
digitalWrite(45, LOW);
delay(x);
}
else if (analogRead(A0)>=705 && analogRead(A0)<=768)
{
digitalWrite(30, HIGH);
digitalWrite(32, HIGH);
digitalWrite(34, HIGH);
digitalWrite(36, HIGH);
digitalWrite(38, HIGH);
digitalWrite(40, HIGH);
digitalWrite(42, HIGH);
digitalWrite(44, HIGH);
digitalWrite(31, HIGH);
digitalWrite(33, HIGH);
digitalWrite(35, HIGH);
digitalWrite(37, HIGH);
digitalWrite(39, LOW);
digitalWrite(41, LOW);
digitalWrite(43, LOW);
digitalWrite(45, LOW);
delay(x);
}
else if (analogRead(A0)>=769 && analogRead(A0)<=832)
{
digitalWrite(30, HIGH);
digitalWrite(32, HIGH);
digitalWrite(34, HIGH);
digitalWrite(36, HIGH);
digitalWrite(38, HIGH);
digitalWrite(40, HIGH);
digitalWrite(42, HIGH);
digitalWrite(44, HIGH);
digitalWrite(31, HIGH);
digitalWrite(33, HIGH);
digitalWrite(35, HIGH);
digitalWrite(37, HIGH);
digitalWrite(39, HIGH);
digitalWrite(41, LOW);
digitalWrite(43, LOW);
digitalWrite(45, LOW);
delay(x);
}
else if (analogRead(A0)>=833 && analogRead(A0)<=896)
{
digitalWrite(30, HIGH);
digitalWrite(32, HIGH);
digitalWrite(34, HIGH);
digitalWrite(36, HIGH);
digitalWrite(38, HIGH);
digitalWrite(40, HIGH);
digitalWrite(42, HIGH);
digitalWrite(44, HIGH);
digitalWrite(31, HIGH);
digitalWrite(33, HIGH);
digitalWrite(35, HIGH);
digitalWrite(37, HIGH);
digitalWrite(39, HIGH);
digitalWrite(41, HIGH);
digitalWrite(43, LOW);
digitalWrite(45, LOW);
delay(x);
}
else if (analogRead(A0)>=897 && analogRead(A0)<=960)
{
digitalWrite(30, HIGH);
digitalWrite(32, HIGH);
digitalWrite(34, HIGH);
digitalWrite(36, HIGH);
digitalWrite(38, HIGH);
digitalWrite(40, HIGH);
digitalWrite(42, HIGH);
digitalWrite(44, HIGH);
digitalWrite(31, HIGH);
digitalWrite(33, HIGH);
digitalWrite(35, HIGH);
digitalWrite(37, HIGH);
digitalWrite(39, HIGH);
digitalWrite(41, HIGH);
digitalWrite(43, HIGH);
digitalWrite(45, LOW);
delay(x);
}
else if (analogRead(A0)>=961 && analogRead(A0)<=1023)
{
digitalWrite(30, HIGH);
digitalWrite(32, HIGH);
digitalWrite(34, HIGH);
digitalWrite(36, HIGH);
digitalWrite(38, HIGH);
digitalWrite(40, HIGH);
digitalWrite(42, HIGH);
digitalWrite(44, HIGH);
digitalWrite(31, HIGH);
digitalWrite(33, HIGH);
digitalWrite(35, HIGH);
digitalWrite(37, HIGH);
digitalWrite(39, HIGH);
digitalWrite(41, HIGH);
digitalWrite(43, HIGH);
digitalWrite(45, HIGH);
delay(x);
}
else
{
digitalWrite(30, LOW);
digitalWrite(32, LOW);
digitalWrite(34, LOW);
digitalWrite(36, LOW);
digitalWrite(38, LOW);
digitalWrite(40, LOW);
digitalWrite(42, LOW);
digitalWrite(44, LOW);
digitalWrite(31, LOW);
digitalWrite(33, LOW);
digitalWrite(35, LOW);
digitalWrite(37, LOW);
digitalWrite(39, LOW);
digitalWrite(41, LOW);
digitalWrite(43, LOW);
digitalWrite(45, LOW);
delay(x);
}

}

Exibições: 690

Anexos

Responder esta

Respostas a este tópico

A0 é um LDR?

Sim.

deve ter um jeito de otimizar mais esse código aí

Tem sim!

    int n = 8; //numero de leds
    void setup() {
        for(int ledPin = 0; ledPin < n ; ledPin++){    
            pinMode(ledPin, OUTPUT);      
        }
    }
    void loop()
    {
        for( int ledPin = 0; ledPin < n ; ledPin++){        
            if (analogRead(0) < (ledPin) * (1024 / n))
                digitalWrite(ledPin,LOW);
            else
                digitalWrite(ledPin,HIGH);
        }
    }    

Este exemplo é para um Arduino Uno/2009.Para o Mega é só remapear os pinos.

Se alguém não entender a lógica (algoritmo)  só falar.

Cara, valeu!!!! É isso aí que eu queria fazer!

Só entreguei o ouro pq já tinha notado que sabias q o caminho era pelo laço do For... ;)

ah! mas aqui tenho um Arduino Mega, a logica muda! Tranquilo, vou apanhar um pouco, mas consigo :D

isso sim que é optimizar um codigo, nunca pensei em mapear as saidas com um for

Mas isso o colega Roger já tinha demonstrado.

Só compactei um pouco a etapa de testes.

Ainda não é a melhor solução. Daria pra melhorar usando deslocamento de bit. Mas não vamos complicar por enquanto.

não, deixa por enquanto eu exercitar pra aprender direito o IF-ELSE e o FOR valeu!

Uma alternativa que ganha em desempenho é jogar essa leitura no A0 pra fora do FOR, obviamente armazenando em uma variável e comparando com ela no IF.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço