Non vedo la luce in fondo a questo tunnel

Porc...
Codice: Seleziona tutto
// LCD
#include <LiquidCrystal.h>
LiquidCrystal lcd(3, 2, A0, A1, A2, A3); // misto pin analogici e digitali. Funzia!
// RTC ed EEPROM
#include "RTClib.h"
RTC_DS1307 RTC;
#include <Wire.h>
#define I2C24C32Add 0x50 // L'indirizzo del 24C32
void setup () {
pinMode (2, OUTPUT); // display
pinMode (3, OUTPUT); // display
pinMode (A0, OUTPUT); // display
pinMode (A1, OUTPUT); // display
pinMode (A2, OUTPUT); // display
pinMode (A3, OUTPUT); // display
Wire.begin();
RTC.begin();
lcd.begin(16, 1);
Serial.begin(115200);
// Memorizza su RTC l'ora e la data del computer
// RTC.adjust(DateTime(__DATE__, __TIME__)); // tolta dopo prima memorizzazione
unsigned short address1 = 0;
unsigned short address2 = 1023;
unsigned short address3 = 4095;
// tolte dopo la prima memorizzazione
// writeEEPROM(I2C24C32Add, address1, 123);
// writeEEPROM(I2C24C32Add, address2, 252);
// writeEEPROM(I2C24C32Add, address3, 200);
lcd.print(readEEPROM(I2C24C32Add, address1), DEC); lcd.print(" ");
lcd.print(readEEPROM(I2C24C32Add, address2), DEC); lcd.print(" ");
lcd.print(readEEPROM(I2C24C32Add, address3), DEC);
delay(2000);
lcd.clear();
DateTime now = RTC.now();
lcd.print(now.day(), DEC);
lcd.print('/');
if (now.month() < 10) lcd.print('0');
lcd.print(now.month(), DEC);
lcd.print('/');
lcd.print(now.year(), DEC);
lcd.print(' ');
lcd.print(now.hour(), DEC);
lcd.print(':');
lcd.print(now.minute(), DEC);
lcd.print(':');
lcd.print(now.second(), DEC);
}
void loop(){}
void writeEEPROM(int deviceaddress, unsigned int eeaddress, byte data )
{
Wire.beginTransmission(deviceaddress);
Wire.write((int)(eeaddress >> 8)); // MSB
Wire.write((int)(eeaddress & 0xFF)); // LSB
Wire.write(data);
Wire.endTransmission();
delay(5); // fatta la prova senza e sembra non essere necessario. Indago
}
byte readEEPROM(int deviceaddress, unsigned int eeaddress )
{
byte rdata = 0xFF;
Wire.beginTransmission(deviceaddress);
Wire.write((int)(eeaddress >> 8)); // MSB
Wire.write((int)(eeaddress & 0xFF)); // LSB
Wire.endTransmission();
Wire.requestFrom(deviceaddress,1);
if (Wire.available()) rdata = Wire.read();
return rdata;
}
Codice: Seleziona tutto
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,20,4); // set the LCD address to 0x27 for a 16 chars and 2 line display
void setup(){
Serial.begin(115200);
lcd.init(); // initialize the lcd
lcd.backlight();
lcd.setCursor(3,0);
lcd.print("Hello, world!");
lcd.setCursor(2,1);
lcd.print("Ywrobot Arduino!");
lcd.setCursor(0,2);
lcd.print("Arduino LCM IIC 2004");
lcd.setCursor(1,3);
lcd.print("Button");
// lcd.setCursor(10,3);
// lcd.print("is pushed");
}
void loop(){
int keyboard = 0;
keyboard = analogRead(0);
// if (keyboard>=800 and keyboard<=900){
// lcd.setCursor(8,3);
// lcd.print("1");
// return;
// }
// else if (keyboard>=700 and keyboard<=799){
// lcd.setCursor(8,3);
// lcd.print("2");
// return;
// }
// else if (keyboard>=500 and keyboard<=620){
// lcd.setCursor(8,3);
// lcd.print("3");
// return;
// }
// else if (keyboard>=400 and keyboard<=499){
// lcd.setCursor(8,3);
// lcd.print("4");
// return;
// }
// else if (keyboard>=200 and keyboard<=320){
// lcd.setCursor(8,3);
// lcd.print("5");
// return;
// }
// else if (keyboard>=100 and keyboard<=199){
// lcd.setCursor(8,3);
// lcd.print("6");
// return;
// }
lcd.setCursor(8,3);
lcd.print(keyboard);
delay(10);
}
Fabius72 ha scritto:Cosa intendi con "rivedere la libreria"?
Le resistenze sono già sul circuitino e poco fa ho fatto la prima prova.
Su LCD ho stampato 3 valori memorizzati agli indirizzi 0, 1023 e 4095 e la data.
Non ho dovuto effettuare nessuna modifica alla libreria. Che culo...
Spento tutto, riacceso dopo un po' ed RTC e i dati erano precisi![]()
Il modulino è questo e nella descrizione si legge "56 byte" di memoria, quando invece sono 4K! Più tardi avviso il venditore.
Che bella sorpresa![]()
http://www.ebay.it/itm/Shield-DS-1307-RTC-real-time-clock-memoria-I2C-Arduino-PIC-/230993139734?pt=Componenti_elettronici_attivi&hash=item35c8439816
Codice: Seleziona tutto
/*
The circuit:
* LCD RS pin to digital pin 8
* LCD Enable pin to digital pin 9
* LCD D4 pin to digital pin 4
* LCD D5 pin to digital pin 5
* LCD D6 pin to digital pin 6
* LCD D7 pin to digital pin 7
* LCD BL pin to digital pin 10
* KEY pin to analogl pin 0
*/
#include <LiquidCrystal.h>
LiquidCrystal lcd(8, 13, 9, 4, 5, 6, 7);
char msgs[5][16] = {"Right Key OK ",
"Up Key OK ",
"Down Key OK ",
"Left Key OK ",
"Select Key OK" };
int adc_key_val[5] ={50, 200, 400, 600, 800 };
int NUM_KEYS = 5;
int adc_key_in;
int key=-1;
int oldkey=-1;
void setup()
{
lcd.clear();
lcd.begin(16, 2);
lcd.setCursor(0,0);
lcd.print("ADC key testing");
}
void loop()
{
adc_key_in = analogRead(0); // read the value from the sensor
key = get_key(adc_key_in); // convert into key press
if (key != oldkey) // if keypress is detected
{
delay(50); // wait for debounce time
adc_key_in = analogRead(0); // read the value from the sensor
key = get_key(adc_key_in); // convert into key press
if (key != oldkey)
{
lcd.setCursor(0, 1);
oldkey = key;
if (key >=0){
lcd.print(msgs[key]);
}
}
}
delay(100);
}
// Convert ADC value to key number
int get_key(unsigned int input)
{
int k;
for (k = 0; k < NUM_KEYS; k++)
{
if (input < adc_key_val[k])
{
return k;
}
}
if (k >= NUM_KEYS)k = -1; // No valid key pressed
return k;
}
Torna a “Elettronica generale”
Visitano il forum: Nessuno e 0 ospiti