Galera to tendo problemas com botões atualmente.
Não consigo encontrar nada de exemplos pelo web então recorri ao lugar certo
Oque eu preciso:
ligar um led quando aperta um botão, e desligar quando apertar o mesmo novamente.
ligar um led quando aperta um botão, temporisar por 5 segundos e desligar quando apertar o mesmo novamente.
ligar um led quando aperta um botão, acionar um segundo led temporisado.
ligar um led quando aperta um botão, temporisar e permitir um segundo botão ligar um segundo led.
Eu preciso apertar um botão1 para acender uma lampada temporisada por 1 minuto, enquanto a lampada tiver temporisada o botão2 tambem vai estar
Isso é para dar inicio em um grande projeto de automação automotivo, que logo postarei aqui.
PS montei agora um Sketch bem simples com 2 botões e 2 leds porem enquanto 1 ta aceso o outro botão não funciona!
const int sensorporta = 10; //sensor de porta entrada
const int start = 9; // botão start entrada
const int acc = 3; //acc saida
const int ign = 4; // arranque saida
const int ilumi = 5; // iluminação cartão saida
int buttonState = 0;
void setup() {
pinMode(sensorporta, INPUT);
pinMode(start, INPUT);
pinMode(acc, OUTPUT);
pinMode(ign, OUTPUT);
pinMode(ilumi, OUTPUT);
}
void loop()
{
buttonState = digitalRead(sensorporta);
if (buttonState == HIGH) {
digitalWrite(acc, HIGH);
delay(120000);
}
else {
digitalWrite(acc, LOW);
}
buttonState = digitalRead(start);
if (buttonState == HIGH) {
digitalWrite(ign, HIGH);
delay(3000);
}
else {
digitalWrite(ign, LOW);
}
}
huum, entendi amigo, mais uma duvida eu tenho um display e apos usar a função lcd.clear() ele começou a piscar as ultimas linhas.
20x4 seria a linha 4 parece que falta energia, fica passando a tela como uma tv mal sintonizada.
Eu preciso atualizar ele para mostra a voltagem da bateria, rpm, combustivel, mistura, pressão oleo, pressão bomba, temperatura
data ,hora, porta aberta, etc... oque acha?
tenho 2 projetos a fazer um deles seria um computador de bordo automotivo.
O outro seria um acesso RFID ao carro, para dar a partida.
vou elaborar os dois e logo mais posto aqui.
ok mais oque usar para atualizar o lcd?
estou usando delay(1000) na ultima linha, paro de piscar o problema é se eu escrevo um testo com 18 caracteres e depois na mesma linha eu escrevo um com 10 ele não apaga os outros 8 caracteres. exemplo
minhacasaazul
perguntaaazul
primeiro texto = minhacasaazul
segundo texto = pergunta
fico na tela um pedaço do texto maior
isso é o que eu uso!
Mas quando uso ele fica piscando o display, se eu coloco antes dele um delay(1000) ou delay(500) fica bom.
O problema é que para o processamento, ai os buttons não funcionan por meio segundo ou 1 segundo.
Bom vamos ao meu codigo todos.
O principio seria basico, um display 4x20 que mostrase algumas informações sobre o estado do carro.
*Portas abertas (1 fio porta fechada entorno de 12v, porta aberta 0v) // sensor original do carro
*Data (usar RTC)
*Hora (usar RTC)
*Bateria (1 fio pinA0 Resolvido)
*Sonda Lambda (1 fio resultado de 0v ~ 1v) // sensor original do carro
*Temperatura (1 fio resultado 0v ~1v) // sensor original do carro
*RPM (pegar do sensor hall // sensor original do carro) http://api.ning.com/files/FqkiRUfegCh3oTr97YY67K0L1J9oMwB5yFwTKnSgipd7HBebIugmH8Kr6xAHDiJ4uf1eFRwqzxFmEOfwqC6mS57oqsqg1XfX/CKP_Sensor_Waveforms.gif olha no exemplo
*Combustivel (1 fio resultado 0v ~1v) // sensor original do carro
Até o momento só oque tive tempo de desenvolver foi oque citarei abaixo, só parei porque tive problemas com buttons
#include <LiquidCrystal.h>
int i=0; // multimetro bateria
const int portade = 8; // botao
const int portadd = 9; // botao
const int portamalas = 10; // botao
int buttonState = 0; // botao
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // pinos do display
void setup() {
pinMode(portade, INPUT);//boato
pinMode(portadd, INPUT);//boato
pinMode(portamalas, INPUT);//boato
lcd.begin(20, 4); // colunas e casas do display
}
void loop() {
buttonState = digitalRead(portade); // le sinal de portade
if (buttonState == HIGH) { // se tiver em HIGH
lcd.setCursor(0, 0); // seta primeira linha do display
lcd.print(" Porta DE Aberta"); // imprime na tela porta de aberta
}
else { // low não imprime nada
}
buttonState = digitalRead(portadd);
if (buttonState == HIGH) {
lcd.setCursor(0, 0);
lcd.print(" Porta DD Aberta");
}
else {
}
buttonState = digitalRead(portamalas);
if (buttonState == HIGH) {
lcd.setCursor(0, 0);
lcd.print(" Porta Malas Aberto");
}
else {
}
lcd.setCursor(0, 1); // seta segunda linha do display
lcd.print("Bateria"); // imprime bateria
int sensorValue = analogRead(A0); // le pino de entrada A0
float voltage = sensorValue * (5.0 / 1023.0); // converte o calculo
lcd.print(voltage); // imprime o resultado de voltage
lcd.setCursor(0, 2); // seta terceira linha
lcd.print(" KM: 4567800"); // imprime kilometragem (provisoria)
lcd.setCursor(0, 3); // seta quarta linha
lcd.print(" 19/04/2014 20:17 "); // imprime data e hora (usar rtc para mostrar data e hora)
delay(1000); // delay para atualizar informações
}