problema codice controller led

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

Driver led utilizzati
http://www.ebay.it/itm/151352455122?ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1497.l2649
Codice Lcd SunFounder Lab 1602 Blau LCD Display with Keypad Shield for Arduino
http://www.ebay.it/itm/151345609089?ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1497.l2649

// 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.

Saluti GenjoSanzo

arduino_plafoniera_led.pde (20.9 KB)

Hai portato un televisore a riparare, gli hai spiegato che non funziona e lasciandolo sul bancone mentre esci gli dici "quando è pronto chiamatemi!!"

Qui hai fatto la stessa cosa :smiley: :smiley: :smiley:

ho chiesto solo un aiuto

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?

Stai chiedendo di provartelo sui nostri arduini?

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

Rispondo qui alla tua richiesta di aiuto privata: in questo modo potrà essere di aiuto anche ad altri.

Lo LCD KeyPad Shield è disponibile in due versioni 1.0 ed 1.1 leggermente diverse tra loro.
http://www.dfrobot.com/wiki/index.php?title=Arduino_LCD_KeyPad_Shield_(SKU:_DFR0009)#Pin_Allocation

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.

ok grazie ora leggo :smiley: comunque il produttore del lcd mi ha fornito altri codici x keypad e x il menu
scaricabile da qui ADrive | Online Storage, Online Backup, Cloud Storage

il codice dovrebbe venire così giusto?

#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;
    }
}