#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);
}
}
Tags:
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.
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por