collapse

* Posts Recentes

Amplificador - Rockboard HA 1 In-Ear por almamater
[27 de Março de 2024, 19:13]


O que é isto ? por KammutierSpule
[26 de Março de 2024, 19:35]


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


Emulador NES em ESP32 por dropes
[13 de Março de 2024, 21:19]


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]


Meu novo robô por josecarlos
[06 de Janeiro de 2024, 16:46]


Laser Engraver - Alguém tem? por almamater
[16 de Dezembro de 2023, 14:23]

Autor Tópico: Ajuda com ecra para arduino.  (Lida 3688 vezes)

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

Offline rafeiro

  • Mini Robot
  • *
  • Mensagens: 2
Ajuda com ecra para arduino.
« em: 27 de Setembro de 2012, 19:18 »
Tenho um arduino com ecrã 16x2 a funcionar com o código em baixo, devido a problema de espaço resolvi alterar o ecrã 16x2 para um ecrã de nokia 5110, o problema e agora não sei alterar o código para ele funcionar correctamente com este ecrã, agradeço a vossa ajuda.

O código é o seguinte:


#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

const int buttonPin = 8 ; // Pin onde está ligado o botão

int time = 300; // Tempo de detonação
int active = 0;
int buttonstate = 0;

// Melodia a ser tocada
int melody[] = {
262, 196,196, 220, 196,0, 247, 262};
int noteDurations[] = {
4, 8, 8, 4,4,4,4,4 };

void setup() {
pinMode(buttonPin, INPUT);
pinMode(13, OUTPUT);
// Linhas e Colunas do LCD:
lcd.begin(16, 2);
// Mensagem Primaria no LCD.
lcd.print("Power On.....");

}

void loop() {

buttonstate = digitalRead(buttonPin);

if (buttonstate == HIGH) {
switch (active)
{
case 0:
active = 1;
break;

case 1:
active = 0;
break;

default:
active = 0;
}

}

inicio:

delay(500);

switch (active)
{

case 0:
{
digitalWrite(13, LOW);
lcd.setCursor(0, 0);
lcd.print("StandBy....................."); // mensagem a ser mostrada quando a bomba está desactiva
lcd.setCursor(0, 7);
lcd.print(" JP Bombs");
time =300; // reset ao tempo da detonação
}
break;

case 1:
if (time > 0)
{
digitalWrite(13, HIGH); // Liga os Leds
lcd.setCursor(0, 0);
lcd.print("72 Virgens em"); // mensagem a ser mostrada quando a bomba está activa
lcd.setCursor(3, 7);
lcd.print(" ");
lcd.setCursor(3, 7);
lcd.print(time); // contagem decrescente
lcd.setCursor(7, 7);
lcd.print("Segundos ");
time = time - 1;

if (time > 30)
{

tone(6, 440, 200);
delay(200);
noTone(6);
buttonstate = digitalRead(buttonPin);
delay(800);
}

else
{
tone(6, 440, 200);
delay(100);
noTone(6);
buttonstate = digitalRead(buttonPin);
delay(100);
tone(6, 440, 200);
delay(100);
noTone(6);
buttonstate = digitalRead(buttonPin);
delay(100);
tone(6, 440, 200);
delay(100);
noTone(6);
buttonstate = digitalRead(buttonPin);
delay(100);
tone(6, 440, 200);
delay(100);
noTone(6);
buttonstate = digitalRead(buttonPin);
delay(100);

}

if (buttonstate == HIGH) {
active =0;

goto inicio;

}

}
else
{

// Mensagem exibida na detonação
lcd.setCursor(0, 0);
lcd.print("BOOOOOOOOMMMMMM");
lcd.setCursor(0, 7);
lcd.print("Beijinhos a Ala!");

// Aviso sonoro da detonação
for (int thisNote = 0; thisNote < 8; thisNote++) {
int noteDuration = 1000/noteDurations[thisNote];
tone(6, melody[thisNote],noteDuration);
int pauseBetweenNotes = noteDuration * 1.30;
delay(pauseBetweenNotes);
noTone(6);
buttonstate = digitalRead(buttonPin);

if (buttonstate == HIGH) {
active =0;

goto inicio;
}
}

break;
}
}
}


O ecrã do 5110 testei com o seguinte código de exemplo e esta a funcionar bem.


#include <PCD8544.h>


// A custom glyph (a smiley)...
static const byte glyph[] = { B00010000, B00110100, B00110000, B00110100, B00010000 };


static PCD8544 lcd;


void setup() {
  // PCD8544-compatible displays may have a different resolution...
  lcd.begin(84, 48);

  // Add the smiley to position "0" of the ASCII table...
  lcd.createChar(0, glyph);
}


void loop() {
  // Just to show the program is alive...
  static int counter = 0;

  // Write a piece of text on the first line...
  lcd.setCursor(0, 0);
  lcd.print("Hello, World!");

  // Write the counter on the second line...
  lcd.setCursor(0, 1);
  lcd.print(counter, DEC);
  lcd.write(' ');
  lcd.write(0);  // write the smiley

  delay(500); 
  counter++;
}

Cumprimentos,
Flavio Reis


Offline dropes

  • Mini Robot
  • *
  • Mensagens: 2.189
Re: Ajuda com ecra para arduino.
« Responder #1 em: 27 de Setembro de 2012, 19:28 »
Existe uma biblioteca para o arduino controlar um LCD da Nokia, basta procurar.
Não insiras a listagem do código num post, existe um símbolo para isso "#"


Offline rafeiro

  • Mini Robot
  • *
  • Mensagens: 2
Re: Ajuda com ecra para arduino.
« Responder #2 em: 28 de Setembro de 2012, 13:08 »
Existe uma biblioteca para o arduino controlar um LCD da Nokia, basta procurar.
Não insiras a listagem do código num post, existe um símbolo para isso "#"

Boas,
Desde já obrigado por a resposta,
Eu consegui ligar o ecrã do 5110 funciona na perfeição pois tirei a biblioteca e corri o exemplo que vem com a mesma, o meu problema reside no código foi por isso que coloquei no post, pois esta era para funcionar com um ecrã 16x2 e ao colocar o ecrã do 5110 o código não funciona, e preciso alterar o código para funcionar com este ecrã do 5110, era aqui que eu precisava de ajuda, pois eu sou um zero a mexer no código.

Cumprimentos,
Flavio Reis