Salve,
mi servirebbe il vostro aiuto al mio problema.
espongo il mio problema sto realizzando un controller arduino per gestire le accensioni di una plafoniera led,
dovrei fare in modo che lcd shield tramite key pad mi faccia accendere i due canali:
canale blu pin 3 canale bianco pin 11
dovrebbe funzionare così
tasti destra sinistra seleziono Canale bianco o Blu e con il tasto select dò conferma
entratro nel canale bianco/blu con i tasti destra/sinistra Devo selezionare Acceso/spento
e poi dare conferma con il tasto select
Schema arduino gestione canali bianco e blu
// include the library code
#include <LiquidCrystal.h>
/**********************************************************/
char array1[]=" SUNFOUNDER "; //the string to print on the LCD
char array2[]="hello, world! "; //the string to print on the LCD
int tim = 250; //the value of delay time
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
/*********************************************************/
void setup()
{
lcd.begin(16, 2); // set up the LCD's number of columns and rows:
}
/*********************************************************/
void loop()
{
lcd.setCursor(15,0); // set the cursor to column 15, line 0
for (int positionCounter1 = 0; positionCounter1 < 26; positionCounter1++)
{
lcd.scrollDisplayLeft(); //Scrolls the contents of the display one space to the left.
lcd.print(array1[positionCounter1]); // Print a message to the LCD.
delay(tim); //wait for 250 microseconds
}
lcd.clear(); //Clears the LCD screen and positions the cursor in the upper-left corner.
lcd.setCursor(15,1); // set the cursor to column 15, line 1
for (int positionCounter = 0; positionCounter < 26; positionCounter++)
{
lcd.scrollDisplayLeft(); //Scrolls the contents of the display one space to the left.
lcd.print(array2[positionCounter]); // Print a message to the LCD.
delay(tim); //wait for 250 microseconds
}
lcd.clear(); //Clears the LCD screen and positions the cursor in the upper-left corner.
}
/************************************************************/
In allegato ho postato il codice tradotto in italiano, ho provato a testarlo su arduino e dice che non ci sono errori
ma non ho potuto testarlo sulla board in quanto mi deve arrivare.
Non sono pratico di arduino però se qualcuno è così gentile da spiegarmi e aiutarmi a risolvere il problema.
In allegato ho postato il codice tradotto in italiano, ho provato a testarlo su arduino e dice che non ci sono errori
ma non ho potuto testarlo sulla board in quanto mi deve arrvare.
E quindi .. la domanda qual'e' ?
E comunque mi sembra strano che non ti dia degli errori, visto che i comandi "Wire." sono stati modificati nelle versioni Ide 1.xx
appunto manca la domanda, da come l'hai esposta sembra dire:
Qui c'è lo schema, sotto vi scaricate lo sketch originale, lo confrontate con il mio e lo sistemate, però la scheda ancora non ce l'ho.
Non dici che ide usi, il pin 6 è in comune tra il tuo schema e il display che non c'è.
In allegato ho postato il codice tradotto in italiano, ho provato a testarlo su arduino e dice che non ci sono errori
ma non ho potuto testarlo sulla board in quanto mi deve arrvare.
Il titolo è "problema codice controller led" però non ci sono errori...
non capisco il treadh, che stai chiedendo?
la domanda sarebbe questa lcd shield dovrebbe fare modo che con la keypad accenda i canali
Canali Pwm Bianco pin:11 Blu pin:3
comunque facendo partire il programma di arduino con sketch e cliccando su test non mi riporta errori
quindi vi chiedo se potete aiutarmi a inserire il codice per fare questo funzionamento
questi sono i codici menu che mi ha dato il venditore del lcd
ora dovrei modificarli per fare il mio funzionamento
Lo sketch che stai usando è generico e valido per il solo LCD senza pulsanti.
Al suo posto devi usare quello indicato nel link.
Ti consiglio prima la lettura di tutto l'articolo.
#include <LiquidCrystal.h>
int blue = 3; // Che Arduino pin PWM si sta utilizzando per l'azzurro?
int white = 11; // Che Arduino pin PWM che si sta utilizzando per il bianco?
// Initialize the library with the numbers of the interface pins
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
//States for the menu.
int currentMenuItem = 0;
int lastState = 0;
void setup() {
//Set the characters and column numbers.
lcd.begin(16, 2);
//Print default title.
clearPrintTitle();
}
void loop() {
//Call the main menu.
mainMenu();
}
void mainMenu() {
//State = 0 every loop cycle.
int state = 0;
//Refresh the button pressed.
int x = analogRead (0);
//Set the Row 0, Col 0 position.
lcd.setCursor(0,0);
//Check analog values from LCD Keypad Shield
if (x < 100) {
//Right
} else if (x < 120) {
//Up
state = 1;
} else if (x < 400){
//Down
state = 2;
} else if (x < 600){
//Left
//state = 1;
} else if (x < 800){
//Select
state = 3;
}
//If we are out of bounds on th menu then reset it.
if (currentMenuItem < 0 || currentMenuItem > 4) {
currentMenuItem = 0;
}
//If we have changed Index, saves re-draws.
if (state != lastState) {
if (state == 1) {
//If Up
currentMenuItem = currentMenuItem - 1;
displayMenu(currentMenuItem);
} else if (state == 2) {
//If Down
currentMenuItem = currentMenuItem + 1;
displayMenu(currentMenuItem);
} else if (state == 3) {
//If Selected
selectMenu(currentMenuItem);
}
//Save the last State to compare.
lastState = state;
}
//Small delay
delay(5);
}
//Display Menu Option based on Index.
void displayMenu(int x) {
switch (x) {
case 1:
clearPrintTitle();
lcd.print ("Luci Blu accese");
break;
case 2:
clearPrintTitle();
lcd.print ("-> Luci Blu Spente");
break;
case 3:
clearPrintTitle();
lcd.print ("-> Luci Bianche Accese");
break;
case 4:
clearPrintTitle();
lcd.print ("Luci Bianche Spente");
break;
}
}
//Print a basic header on Row 1.
void clearPrintTitle() {
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" HACKSHED.CO.UK ");
lcd.setCursor(0,1);
}
//Show the selection on Screen.
void selectMenu(int x) {
switch (x) {
case 1:
clearPrintTitle();
lcd.print ("Selected Opt 1");
digitalWrite(3, HIGH);//Call the function that belongs to Option 1
break;
case 2:
clearPrintTitle();
lcd.print ("Selected Opt 2");
digitalWrite(3, LOW);//Call the function that belongs to Option 2
break;
case 3:
clearPrintTitle();
lcd.print ("Selected Opt 3");
digitalWrite(11, HIGH);//Call the function that belongs to Option 3
break;
case 4:
clearPrintTitle();
lcd.print ("Selected Opt 4");
digitalWrite(11, LOW);//Call the function that belongs to Option 4
break;
}
}