Exemplo 3, basicamente o mesmo do exemplo anterior, apenas explorei a parte de PWM do arduino, fiz um fade dos Leds, e adicionei uma buzina, agora a vida esta facilitada pois comprei uma protoboard. Fiquei sabendo que este display tem um led preciso ativa-lo agora porém é recomendado usar uma alimentação externa pois a corrente da placa do arduino é baixa, posso ligar direto se eu quiser interagir com esse led terei que fazer um circuito com transitor, vou aprender como faz e poder testar. Agradeço mais uma vez a Empresa Tato por nacionalizar essa fantástica Placa.
Código fonte:
/* Software: Serial, Escreve no Display e acend Leds, Le botões, Liga Buzina. 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 | / Buy Cipro style="color: #7e7e7e;"> | \ |____ \____| | 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 lcd(7, 6, 5, 4, 3, 2); // iniciando o lcd com os numeros dos pinos que serão usados int ledA = 11; // led (pino pwm) int ledB = 9; // led (pino pwm) int ledC = 10; // led (pino pwm) int buzina = 8; //buzzina 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(ledA,OUTPUT); //setando o sinal como saida LED pinMode(ledB,OUTPUT); //setando o sinal como saida LED pinMode(ledC,OUTPUT); //setando o sinal como saida LED pinMode(buzina,OUTPUT); //setando a buzzina como saida Serial.begin(9600); // setando a serial delay(1000); // dando um delay } // principal void loop() { if (botao < 0 ){ // somente chama o a função que lê o botão se for a primeira vez. 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){ // espera tempoAtivado segundos delay(tempo); } } /* modoSerial, Lê 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,ledA,0.1); // apagando led pino ativarDesativarPinoDig(LOW,ledB,0.1); // apagando led pino ativarDesativarPinoDig(HIGH,ledC,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 } fazScrollDireita(); delay(200); }else { //quer dizer que não tem nada na serial lcd.clear(); lcd.setCursor(0, 1); lcd.print("NADA NA SERIAL"); delay(2000); botao = retornaBotaoAnalogico(analogPin,1,1); } } void modoBeta() { lcd.clear(); //limpa lcd lcd.print("LEDS EFEITO FADE"); // escreve algo lcd.setCursor(0,1); lcd.print(" rafael gimenes "); // fazScrollDireita(); // modo balada 20 x for(int valorFade = 20 ; valorFade >= 0; valorFade -=1) { ledsFade(5); } botao = retornaBotaoAnalogico(analogPin,1,1); // lê os botões } void modoAlpha() { ativarDesativarPinoDig(HIGH,buzina,2); //tocando buzina ativarDesativarPinoDig(HIGH,ledB,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 "); fazScrollDireita(); botao = retornaBotaoAnalogico(analogPin,1,1); // lê os botões } void modoInicio() { ativarDesativarPinoDig(LOW,buzina,0); //desliga a buzina buzina lcd.clear(); //limpa lcd lcd.print(" EXEMPLO v3 "); lcd.setCursor(0, 1); lcd.print("by RafaelGimenes"); // escreve algo ativarDesativarPinoDig(LOW,ledA,0.1); //apagando led pino ativarDesativarPinoDig(HIGH,ledC,0.1); //acendendo led pino delay(500); ativarDesativarPinoDig(LOW,ledC,0.1); //apagando led pino ativarDesativarPinoDig(HIGH,ledA,0.1); //acendendo led pino botao = retornaBotaoAnalogico(analogPin,1,0); // lê os botões } /* Faz o Scroll pra Esquerda */ void fazScrollDireita(){ for (int i = 0; i < 16; i++) { lcd.scrollDisplayLeft(); delay(600); } } /* Leds modo Fade */ void ledsFade(int tempo){ // do fraco pro forte for(int valorFade = 255 ; valorFade >= 0; valorFade -=1) { analogWrite(ledC, valorFade); delay(tempo); } for(int valorFade = 255 ; valorFade >= 0; valorFade -=1) { analogWrite(ledB, valorFade); delay(tempo); } for(int valorFade = 255 ; valorFade >= 0; valorFade -=1) { analogWrite(ledA, valorFade); delay(tempo); } } /* 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); }










Pra que serve isso? rs
nerd!
meu amigo
preciso de sua ajuda, vc tem algum esquema
ou sabe como se faz para conectar
2 ou 3 Display LCD na Arduino?
Já procurei na net, mas nada encontrei e
sou novato
Desde ja agradeço
sem mais
meu amigo
preciso de sua ajuda, vc tem algum esquema
ou sabe como se faz para conectar
2 ou 3 Display LCD na Arduino?
Já procurei na net, mas nada encontrei e
sou novato
Desde ja agradeço
sem mais