Todo estudo feito, foi baseado nos tutoriais do site arduino.cc, esse código e esquema já tem alguma vantagem eu mostro como fazer um código e organizado e fácil de entender, também fiz um esquema diferente da ligação do LCD pois o exemplo do site, usa pinos digitais distantes na placa, eu alterei para ficar com os pinos mais perto um do outro.
Outro ponto forte foi fazer os botões usando uma entrada Analógica, podendo por quantos botões eu quiser. Dica do Guto guru da Eletrônica e meu chefe. Agradeço também ao Reche que me emprestou a câmera e a Empresa Tato por nacionalizar essa fantástica Placa, e ao Leandro que trabalha comigo que me emprestou o LCD e deu dicas.
Próximo Passo esperar o Receptor Infrared e fazer as brincadeiras com Controle de TV.
Segue o Código, espero que entendam, a IDE de programação usada foi a Arduino 0018 e rodou perfeitamente no Linux.
Veja o código :
/* Software: Serial, Escreve no Display e acend Leds, Le botões saida analógica. Hardware: LCD e Serial e Botões Analógicos LCD: Conexão no LCD Marrom no 1 do Display; LCD >>>> ARDUINO: (1 Vermelho > GND),(2 Marrom > 5v),(3 Amarelo > Potenciometro), (4 Laranja > Pino 7),(5 Azul > GND),(6 Verde > Pino 06), (11 Vermelho > Pino 05), (12 Marrom > Pino 04),(13 Amarelo > Pino 03), (14 Laranja > Pino 02); Botões Analogica, 4 resistores de 4K7, 1 no GND, 1 no 5V, e 2 Entre os Botões. analogPin +5 V | | | \ ---------------- / 4K7 | \ | / | \ |____ \____| | BT1 | | \ | / | \ 4K7 | / | \ |____ \____| | BT2 | | | | \ | / | \ 4K7 | / | \ |____ \____| | | \ / 4K7 \ / \ / _____ ___ GND _ A referência usada é a Default 5V analogReference(DEFAULT); Autor: Rafael Gimenes Leite - 06/04/2010 */ #include <LiquidCrystal.h> // incluindo a biblioteca do LCD LiquidCrystal buy doxycycline online lcd(7, 6, 5, 4, 3, 2); // iniciando o lcd com os numeros dos pinos que serão usados int DigPin08 = 8; // setando o pino 10 usado pra led int DigPin09 = 9; // setando o pino 9 usado pra led int AnalogPin = 5; // setando o pino analogico int Botao = -1; // variavel do botão // setup void setup() { lcd.begin(16, 2); // configurando o numero de colunas e linhas do lcd lcd.print("iniciando hacks"); // Colocando uma mensagem no LCD pinMode(DigPin08,OUTPUT); //setando o sinal como saida LED pinMode(DigPin09,OUTPUT); //setando o sinal como saida LED Serial.begin(9600); // setando a serial delay(1000); } // principal void loop() { if (Botao < 0 ){ Botao = RetornaBotaoAnalogico(AnalogPin,1,0); // lê os botões } switch (Botao) { case 0: ModoInicio(); break; case 1: ModoSerial(); break; case 2: ModoBeta(); break; case 3: ModoAlpha(); break; } delay(500); } /* Ativa ou Desativa um Pino */ void AtivarDesativarPinoDig(char estatus,int qualPino,int tempo){ tempo = tempo * 1000; // mutiplicando por 1000 digitalWrite(qualPino, estatus); // liga o pino if (tempo > 0){ delay(tempo); } // espera tempoAtivado segundos } /* ModoSerial, Le a porta serial e plota no display. */ void ModoSerial(){ delay(1000); lcd.clear(); lcd.setCursor(0, 0); // setando coluna zero linha 1; lcd.print(" LENDO SERIAL "); delay(1000) ; if (Serial.available() > 0) { delay(100); // delay de 100 ms lcd.clear(); // limpa o display AtivarDesativarPinoDig(LOW,DigPin08,0.1); // apagando led pino AtivarDesativarPinoDig(HIGH,DigPin09,0.1); // acendendo led pin lcd.clear(); lcd.setCursor(0, 0); while (Serial.available() > 0) { // ler direto o que vier lcd.write(Serial.read()); // joga no lcd o que recebe } FazScroll(); delay(200); }else { lcd.clear(); lcd.setCursor(0, 1); lcd.print("NADA NA SERIAL"); delay(2000); Botao = RetornaBotaoAnalogico(AnalogPin,1,1); } } void ModoBeta() { AtivarDesativarPinoDig(LOW,DigPin08,0.1); //apagando led pino AtivarDesativarPinoDig(HIGH,DigPin09,0.1); //acendendo led pino lcd.clear(); //limpa lcd lcd.print(" Podia estar matando "); // escreve algo lcd.setCursor(0,1); lcd.print(" com o arduino eh claro "); FazScroll(); Botao = RetornaBotaoAnalogico(AnalogPin,1,1); // lê os botões } void ModoAlpha() { AtivarDesativarPinoDig(LOW,DigPin09,0.1); //apagando led pino AtivarDesativarPinoDig(HIGH,DigPin08,0.1); //acendendo led pino lcd.clear(); //limpa lcd lcd.print(" www.RafaelGimenes.net "); // escreve e algo lcd.setCursor(0,1); lcd.print(" 100% SOFTWARE LIVRE "); FazScroll(); Botao = RetornaBotaoAnalogico(AnalogPin,1,1); // lê os botões } void ModoInicio() { lcd.clear(); //limpa lcd lcd.print(" EXEMPLO v2 "); lcd.setCursor(0, 1); lcd.print("by RafaelGimenes"); // escreve algo AtivarDesativarPinoDig(LOW,DigPin09,0.1); //apagando led pino AtivarDesativarPinoDig(HIGH,DigPin08,0.1); //acendendo led pino delay(500); AtivarDesativarPinoDig(LOW,DigPin08,0.1); //apagando led pino AtivarDesativarPinoDig(HIGH,DigPin09,0.1); //acendendo led pino Botao = RetornaBotaoAnalogico(AnalogPin,1,0); // lê os botões } /* Faz o Scroll pra Esquerda */ void FazScroll(){ for (int i = 0; i < 16; i++) { lcd.scrollDisplayLeft(); delay(600); } } /* Retorna o Botão Pressionado Lendo a saida analogica setada E Vendo a Variação dos resistores */ int RetornaBotaoAnalogico (int AnaPin, int tempoEspera, int tipo){ int ErroJanela = 50; int ValorLido = 0; tempoEspera=tempoEspera*1000; analogReference(DEFAULT); ValorLido = analogRead(AnaPin); if (tipo == 0){ // tipo = 0 mostra labels //lcd.clear(); lcd.setCursor(0, 1); lcd.print("ESPERANDO BOTAO "); } if ((ValorLido > 740 ) && (ValorLido < 790)){ if (tipo == 0){ lcd.setCursor(0, 1); lcd.print("BT01 PRESSIONADO"); delay(tempoEspera); } return 1; } else if((ValorLido > 640 ) && (ValorLido < 690)){ if (tipo == 0){ lcd.setCursor(0, 1); lcd.print("BT02 PRESSIONADO"); delay(tempoEspera); } return 2; } else if((ValorLido > 500 ) && (ValorLido < 560)){ if (tipo == 0){ lcd.setCursor(0, 1); lcd.print("BT03 PRESSIONADO"); delay(tempoEspera); } return 3; } else { return 0; } // debug //lcd.clear();lcd.setCursor(1, 10);lcd.print(ValorLido);delay(500); }
É isso até a próxima.












e ai Rafael… to curioso sobre o modelo do teu lcd… afinal tenho um aqui e nao consigo usar a biblioteca do arduino…
grato desde já…