collapse

* Posts Recentes

Emulador NES em ESP32 por dropes
[22 de Abril de 2024, 14:14]


Arame de Estendal por almamater
[18 de Abril de 2024, 16:16]


O que é isto ? por SerraCabo
[12 de Abril de 2024, 14:20]


Amplificador - Rockboard HA 1 In-Ear por almamater
[11 de Abril de 2024, 20:46]


Meu novo robô por josecarlos
[29 de Março de 2024, 18:30]


Bateria - Portátil por almamater
[25 de Março de 2024, 22:14]


Escolher Osciloscópio por jm_araujo
[06 de Fevereiro de 2024, 23:07]


TP4056 - Dúvida por dropes
[31 de Janeiro de 2024, 14:13]


Leitura de dados por Porta Serie por jm_araujo
[22 de Janeiro de 2024, 14:00]


Distancia Cabo por jm_araujo
[08 de Janeiro de 2024, 16:30]

Autor Tópico: temporizador+lcd  (Lida 11454 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline amgcgoncalves

  • Mini Robot
  • *
  • Mensagens: 27
Re:temporizador+lcd
« Responder #15 em: 22 de Julho de 2009, 02:36 »
Posso fazer um bocadinho de off-topic?

Não há redundância entre primitiva e integral. Apesar do senhor Barrow ter descoberto que através de um se pode calcular o outro (o integral de uma função entre dois pontos é a diferença das primitivas nesses pontos), ambos podem ter usos completamente isolados. Quanto mais não seja porque o integral é uma área enquanto que a primitiva de uma função é o seu estado de variação com abstracção um nível acima (por exemplo, o momento linear é a primitiva da força, pelas razões óbvias). A culpa desta ligação "errada" que é tão usual acaba por ser de alguns professores de Análise Matemática do ensino superior... :P

Quanto ao código do Arduino, até eu que sou estudante de Engenharia Informática e de Computadores preferi pegar do zero e perder umas horinhas a ler os references, bem como a estudar os tutorials mais básicos. Afinal de contas, haverá algo melhor que possuir o conhecimento desde a raíz? Bugs e bugs que se evita com este tipo de aprendizagem. É a minha opinião.
The Whys over the Whats, because I'm a theory freak.

Offline ghostbuster

  • Mini Robot
  • *
  • Mensagens: 339
Re:temporizador+lcd
« Responder #16 em: 24 de Julho de 2009, 02:48 »
ja consegui qualquer coisinha :p , é assim, o timer arranca com a hora que esta definida no codigo, o led do digital8 esta ligado nos primeiros 20 segundos, desliga 40, liga 20 e sempre assim.Agora ja é tarde mas amanha vou martelar o codigo e fazer uma interface para introduzir os dados..., ja agora alguem tem uma ideia de como faço countdown?
offtopic:
o meu breaduino ja bomba :D tem que se carregar upload e esperar 3 segundos e carregar no reset, por isso este é o meu segundo projecto visto que o lcd+ds1620 ja o pus a funcionar hoje

Citar

#include <LiquidCrystal.h>

// LiquidCrystal display with:
// rs on pin 12
// rw on pin 11
// enable on pin 10
// d4, d5, d6, d7 on pins 5, 4, 3, 2
LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2);

int ledPin = 8;int clock = 998;int hour = 10;
int min = 27;
int sec = 0;

void setup()
{
  Serial.begin(9600);
  pinMode(ledPin, OUTPUT);
}

void loop()
{
  delay(clock);

  sec = sec + 1;  // basic conditionals
  if (sec <= 20) {
    digitalWrite(ledPin, HIGH);
  }  if (sec > 20) {
    digitalWrite(ledPin, LOW);
  }

  /* if (min > 20 && min < 40) {
    digitalWrite(ledPin, HIGH);
  } else {
     digitalWrite(ledPin, LOW);
  } */

  // time keeping stuff
  if (sec > 59) {
    sec = 0;
    min = min + 1;
  }  if (min > 59) {
    min = 0;
    hour = hour + 1;
  }  if (hour > 23) {
    hour = 0;
  } 
  lcd.setCursor(0,0);
  lcd.print(hour);
  lcd.print(":");
  lcd.print(min);
  lcd.print(":");
  lcd.print(sec);
 

}





Offline ricardo-reis

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 1.338
Re:temporizador+lcd
« Responder #17 em: 24 de Julho de 2009, 03:59 »
eu n tou mt certo acerca da possibilidade de usares o clock do arduino pra simular um rtc, mas podes mt bem pegar no tutorial do tr3s do arduino + ds1307 (ou esperar que eu poste a interacção do mesmo com o nosso lcd) e a partir daí tens mais de metade do trabalho feito.. :)

Offline TigPT

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 5.372
    • Tiago Rodrigues
Re:temporizador+lcd
« Responder #18 em: 24 de Julho de 2009, 10:55 »
Podes utilizar a função millis() no loop principal para contar tempo.

quando fazes
Código: [Seleccione]
x = millis();
x fica com o valor de milisegundos desde que o arduino foi ligado. Assim, basta guardar o primeiro valor e comparar como no exemplo:

Código: [Seleccione]
inicio = millis(); //quando queres começar a contar o tempo.
//delay = quanto tempo queres esperar;
if( millis() > inicio + delay){ //significa que já passou delay desde a afectação da variável inicio.
//bloco de código a fazer quando o tempo acaba.
}

Podes consultar mais sobre a função millis aqui:
http://arduino.cc/en/Reference/Millis
« Última modificação: 24 de Julho de 2009, 10:56 por TigPT »

Offline ghostbuster

  • Mini Robot
  • *
  • Mensagens: 339
Re:temporizador+lcd
« Responder #19 em: 24 de Julho de 2009, 16:02 »
ontem a noite resolvi fazer um novo codigo de novo e ja tinha 50% feito quando fui dormir, mas carreguei em save as e puf a merda do ide desapareceu e nao mo guardou  :-\ ah alguma possibilidade de tirar o sketch do arduino? tipo download em vez de upload

Offline TigPT

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 5.372
    • Tiago Rodrigues
Re:temporizador+lcd
« Responder #20 em: 24 de Julho de 2009, 16:37 »
Que conheça não, mesmo que desse ias tirar o hexa, depois terias que fazer reverse para código, esquece completamente essa possibilidade.

Offline ghostbuster

  • Mini Robot
  • *
  • Mensagens: 339
Re:temporizador+lcd
« Responder #21 em: 24 de Julho de 2009, 17:12 »
Que conheça não, mesmo que desse ias tirar o hexa, depois terias que fazer reverse para código, esquece completamente essa possibilidade.
pois  :-[ eu agora vou começar a fazer um novo codigo, e depois se funcionar correctamente faço um keypad com uma tela touchscreen que tenho de um navegador gps e ja testei a bocado com o arduino e funcionou

Offline ghostbuster

  • Mini Robot
  • *
  • Mensagens: 339
Re:temporizador+lcd
« Responder #22 em: 25 de Julho de 2009, 21:51 »
como é que faço para que quando carrego no butao adicione 10 segundos ao sec e para?
   buttonState = digitalRead(buttonPin);
   if (buttonState == HIGH ) { 
       
     // turn LED on:   
     digitalWrite(ledPin, HIGH);
     sec=sec+10;
     }
   
    else {
     // turn LED off:
     digitalWrite(ledPin, LOW);
     
   }

assim como esta acima, ele adiciona 10 segundos e mais 10 e mais 10 se eu manter o butao pressionado, eu quero que so adicione 10 segundos e mesmo que continue pressionado nao faça mais nada a nao ser que tire o dedo do butao e carregue outra vez

Offline tr3s

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 811
  • char x=1, y=5; x^=y^=x^=y;
Re:temporizador+lcd
« Responder #23 em: 25 de Julho de 2009, 23:19 »
Quando fazes upload ele guarda uma versao do código num ficheiro cpp na pasta do Skectch. Vai ver se tens lá alguma coisa... se entretanto ja fizeste alguma coisa nesse sketch entao podes esquecer :P
Tr3s
Daniel Gonçalves

Offline metRo_

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 3.753
Re:temporizador+lcd
« Responder #24 em: 26 de Julho de 2009, 01:37 »
como é que faço para que quando carrego no butao adicione 10 segundos ao sec e para?
   buttonState = digitalRead(buttonPin);
   if (buttonState == HIGH ) {  
        
     // turn LED on:    
     digitalWrite(ledPin, HIGH);
     sec=sec+10;
     }
    
    else {
     // turn LED off:
     digitalWrite(ledPin, LOW);
      
   }

assim como esta acima, ele adiciona 10 segundos e mais 10 e mais 10 se eu manter o butao pressionado, eu quero que so adicione 10 segundos e mesmo que continue pressionado nao faça mais nada a nao ser que tire o dedo do butao e carregue outra vez

Tens que criar uma variável que te indique o estado. Antes de explicar como se faz quero dizer que tens uma tag de code para inserir código.

Código: [Seleccione]
boolean botaoPressionado=false;

buttonState = digitalRead(buttonPin);
   if (buttonState == HIGH && !botaoPressionado) {
 
     botaoPressionado = true; //como agora a variavel botaoPressionado está a true ele não vai entrar neste if.    
     digitalWrite(ledPin, HIGH);
     sec=sec+10;

   } else if(buttonState==LOW && botaoPressionado){

     botaoPressioando = false; //Quando o botão é largado ele entra neste ciclo e so ai coloca a variavel botaoPressionado a false e só agora é possivel entrar no if anterior.
     digitalWrite(ledPin, LOW);

   }

Offline ghostbuster

  • Mini Robot
  • *
  • Mensagens: 339
Re:temporizador+lcd
« Responder #25 em: 26 de Julho de 2009, 01:49 »
obrigado metRo_, agora tenho outro problema que apareceu assim a toa porque ate agora deu tudo certo. se eu tiver isto no void setup pinMode(buttonPin, INPUT); , ele nao mosntra nada no lcd, se o tirar ja monstra
« Última modificação: 26 de Julho de 2009, 02:00 por metRo_ »

Offline metRo_

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 3.753
Re:temporizador+lcd
« Responder #26 em: 26 de Julho de 2009, 02:03 »
Coloca isto "boolean botaoPressionado=false;" antes do void setup.

Em relação ao teu problema, como tens a ligação do botão? Tens uma resistencia a fazer pull-down ou pull-up?

Offline ghostbuster

  • Mini Robot
  • *
  • Mensagens: 339
Re:temporizador+lcd
« Responder #27 em: 26 de Julho de 2009, 02:14 »
usei o circuito igual a esse http://www.arduino.cc/en/Tutorial/Button mas ate agora deu

Offline metRo_

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 3.753
Re:temporizador+lcd
« Responder #28 em: 26 de Julho de 2009, 02:23 »
Exactamente, isso é um pull-down, isto é, quando não estás a carregar no botão o circuito fexa-se pela resistência para 0V e quando carregas em fexa-se pelos 5V pois a corrente tem menos resistências por este caminho, tentando explicar isto de uma forma simples.

Devia funcionar quer tenhas o pinMode ou não.

Offline ghostbuster

  • Mini Robot
  • *
  • Mensagens: 339
Re:temporizador+lcd
« Responder #29 em: 26 de Julho de 2009, 02:38 »
 ele agora quando carrego no butao adicioname um caracter esquesito no lcd neste momento o codigo esta assim,

Citar

#include <LiquidCrystal.h>

// LiquidCrystal display with:
// rs on pin 12
// rw on pin 11
// enable on pin 10
// d4, d5, d6, d7 on pins 5, 4, 3, 2
LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2);

int hour = 0;
int min = 0;
int sec = 0;
const int buttonPin = 10;     // the number of the pushbutton pin
const int ledPin =  8;
int buttonState = 0;

boolean botaoPressionado=false;


void setup()
{
        lcd.setCursor(0,0);
  lcd.print(hour);
  lcd.print(":");
  lcd.print(min);
  lcd.print(":");
  lcd.print(sec);
}

void loop()
{
   buttonState = digitalRead(buttonPin);
   if (buttonState == HIGH && !botaoPressionado) {
 
     botaoPressionado = true; //como agora a variavel botaoPressionado está a true ele não vai entrar neste if.   
     digitalWrite(ledPin, HIGH);
     sec=sec+10;

   } else if(buttonState==LOW && botaoPressionado){

     botaoPressionado = false; //Quando o botão é largado ele entra neste ciclo e so ai coloca a variavel botaoPressionado a false e só agora é possivel entrar no if anterior.
     digitalWrite(ledPin, LOW);

   }
   
 

  }
 


o lcd print tem que estar no main ou no loop, é que funciona de qualquer maneira nos dois