Loading...
  Show Posts
Pages: [1]
1  International / Software / Aiuto per capire qual'è il mio errore on: February 07, 2013, 09:55:07 pm
Ciao a tutti ho creato questo programmino (è ancora in attesa di migliorie)
 
Code:
#include <LiquidCrystal.h>

LiquidCrystal lcd(2, 3, 4, 5, 6, 7, 8);
char password[5] = {95,95,95,95};
char Pcorretta[5] = {"1992"};
char tasti[5][5] = {
                    {"1", "2", "3", "A"},
                    {"4", "5", "6", "B"},
                    {"7", "8", "9", "C"},
                    {"*", "0", "#", "D"}
                   };
char tastoPremuto1;
char tastoPremuto2;
int latchPin = 12;
int clockPin = 13;
int dataPin = 11;
long oldTime;
int lockCr;
boolean Blink = HIGH;
boolean risposta = 0;
byte chiave1 [8] = {14,17,17,17,17,17,14};
byte chiave2 [8] = {0,0,0,31,2,2,0};

void setup()

{
  pinMode(latchPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
  pinMode(dataPin, OUTPUT);
  pinMode(14, INPUT);
  pinMode(15, INPUT);
  pinMode(16, INPUT);
  pinMode(17, INPUT);
  lcd.createChar(1, chiave1);
  lcd.createChar(2, chiave2);
  lcd.begin(7, 2);
  lcd.noCursor();
  Serial.begin(9600);
  //
  oldTime = 650;
  lcd.home();
  lcd.print("PASSWORD");
  Blink = 1;
}

void loop()
{
  while(1)
  {
    for(int cr=0; cr<4; cr++)
    {
      if ((Blink == LOW) && (password[cr] == 95)){
        password[cr] = 32;
      }
      if ((Blink == HIGH) && (password[cr] == 32)){
        password[cr] = 95;
      }
      lcd.setCursor((cr+4), 1);
      lcd.write(password[cr]);
    }
    if (oldTime < millis())
    {
      Blink = !Blink;
      oldTime = (millis() + 650); 
    }
    if (lockCr == 4){
      break;
    }
    leggoKeyboar();
  }
 
 
  delay(1000);
  lcd.clear();
  for(int i=0; i<48; i++)
  {
    if(password[i]!=Pcorretta[i])
    {
      risposta=1;
      break;
    }
    else
    {
      risposta=0;
    }
  }
  Serial.println(risposta);
  if(risposta == 0)
  {
    lcd.clear();
    lcd.home();
    lcd.print("UNLOCKED");
    lcd.setCursor(6, 1);
    lcd.write(1);
    lcd.setCursor(7, 1);
    lcd.write(2);
    delay(5000);
    while(1){
    }
  }else{
    lcd.clear();
    lcd.home();
    lcd.print("ERROR");
    for(int j=0; j<9; j++)
    {
      lcd.setCursor(6, 1);
      lcd.write(1);
      lcd.setCursor(7, 1);
      lcd.write(2);
      delay(400);
      lcd.setCursor(6, 1);
      lcd.write(120);
      lcd.setCursor(7, 1);
      lcd.write(120);
      delay(400);
    }
    oldTime = 650;    //reset
    lcd.clear();
    lcd.home();
    lcd.print("PASSWORD");
    Blink = 1;
    lockCr=0;
    for(int i=0; i<5; i++)
    {
      password[i] = 95;
    }
   
  }
}


void leggoKeyboar()
{
  for (int k=0, k<4, k++)
  {
    digitalWrite(latchPin, LOW);
    shiftOut(dataPin, clockPin, LSBFIRST, (B00000001 << k));
    digitalWrite(latchPin, HIGH);
    for (int l=0, l<4, l++)
    { 
      if (digitalRead(l+14) != 0)
      {
        tastoPremuto1 = tasti[l][k];
        break;
      }else{
        tastoPremuto1 = 0;
      }
    }
  }
  delay(30);
  for (int k=0, k<4, k++)
  {
    digitalWrite(latchPin, LOW);
    shiftOut(dataPin, clockPin, LSBFIRST, (B00000001 << k));
    digitalWrite(latchPin, HIGH);
    for (int l=0, l<4, l++)
    { 
      if (digitalRead(l+14) != 0)
      {
        tastoPremuto2 = tasti[l][k];
        break;
      }else{
        tastoPremuto2 = 0;
      }
    }
  }
  if(tastoPremuto1 == tastoPremuto2) && (tastoPremuto1 != 0)
  {
    while(tastoPremuto1 == tastoPremuto2)
    {
      for (int k=0, k<4, k++)
      {
        digitalWrite(latchPin, LOW);
        shiftOut(dataPin, clockPin, LSBFIRST, (B00000001 << k));
        digitalWrite(latchPin, HIGH);
        for (int l=0, l<4, l++)
        { 
          if (digitalRead(l+14) != 0)
          {
            tastoPremuto2 = tasti[l][k];
            break;
          }else{
            tastoPremuto2 = 0;
          }
        }
      }
    }
    password[lockCr] = tastoPremuto1;
    lockCr++;
  }
}

l'ho controllato e ricontrollato ma non mi sembra ci siano errori eppure l'IDE mi da i seguenti errori

Code:
password_lcd:11: error: too many initializers for 'char [5]'
password_lcd:11: error: too many initializers for 'char [5]'
password_lcd:11: error: too many initializers for 'char [5]'
password_lcd:11: error: too many initializers for 'char [5]'
password_lcd.ino: In function 'void leggoKeyboar()':
password_lcd:134: error: expected initializer before '<' token
password_lcd:191: error: expected primary-expression at end of input
password_lcd:191: error: expected `;' at end of input
password_lcd:191: error: expected primary-expression at end of input
password_lcd:191: error: expected `)' at end of input
password_lcd:191: error: expected statement at end of input
password_lcd:191: error: expected `}' at end of input
mi riuscireste ad aiutare a capire di che si tratta perchè io non riesco a far coincidere gli errori riportati con ciò che c'è scritto nello Sketch
2  International / Generale / Re: Problema con i pin di uscita analogica PWM on: January 30, 2013, 07:44:25 pm
Grazie di aver risposto in modo così rapido al mio problema, mi avete dato una spiegazione più che soddisfacente.
Se posso vorrei chiedere inoltre se siete a conoscenza ed eventualmente postarmi qualche guida o spiegazione delle funzioni delle librerie utilizzate in arduino, preferibilmente in italiano   ( ammetto di non essere una cima in inglese  smiley-cry   )
3  International / Generale / Problema con i pin di uscita analogica PWM on: January 30, 2013, 02:06:20 pm
Code:
#include <IRremote.h> // use the library
#define BLU   9
#define VERDE 10
#define ROSSO 11
int receiver = 12; // pin 1 of IR receiver to Arduino digital pin 11
boolean stateblu;
boolean stateverde;
boolean staterosso;
boolean statemeno;
boolean statepiu;
byte brightness;
IRrecv irrecv(receiver);
decode_results results;
void setup()
{
  pinMode(BLU, OUTPUT);
  pinMode(VERDE, OUTPUT);
  pinMode(ROSSO, OUTPUT);
  irrecv.enableIRIn(); // Start the receiver
  brightness = 255;
}
void loop()
{  
  if (irrecv.decode(&results)) //controllo se il ricevitore IR ha rilevato un segnale
  {  
    if (results.value == 16724175) //numero 1
    {
      statemeno = 0; //se ho premuto un tasto differente da più o meno l'hold dei tasti viene disattivato
      statepiu = 0;
      stateblu = 1 - stateblu;
    }
    if (results.value == 16718055) //numero 2
    {
      statemeno = 0;
      statepiu = 0;
      stateverde = 1 - stateverde;
    }
    if (results.value == 16743045) //numero 3
    {
      statemeno = 0;
      statepiu = 0;
      staterosso = 1 - staterosso;
    }
    if (results.value == 16748655) //tasto più
    {
      statemeno = 0;
      statepiu = 1;
      if (brightness < 251)
      {
        brightness = brightness + 4;
      }else{
        brightness = 255;
      }
    }
    if (results.value == 16754775) //tasto meno
    {
      statemeno = 1;
      statepiu = 0;
      if (brightness > 4)
      {
        brightness = brightness - 4;
      }else{
        brightness = 0;
      }
    }
    if (results.value == 4294967295) //quando un qualsiasi tasto è tenuto premuto
    {
      if (statepiu == 1) //se il tasto più è tenuto premuto
      {
        if (brightness < 251)
        {
          brightness = brightness + 4;  //aumento la luminosità
        }else{
          brightness = 255;
        }
      }
      if (statemeno == 1)  //se il tasto meno è tenuto premuto
      {
        if (brightness > 4)
        {
          brightness = brightness - 4;   //diminuisco la lumiosità
        }else{
          brightness = 0;
        }
      }
    }
    irrecv.resume();// receive the next value
  }
  if (stateblu == 1)
  {
    analogWrite(BLU, brightness);
  }else{
    analogWrite(BLU, 0);
  }
    
  if (staterosso == 1)
  {
    analogWrite(ROSSO, brightness);
  }else{
    analogWrite(ROSSO, 0);
  }
  if (stateverde == 1)
  {
    analogWrite(VERDE, brightness);
  }else{
    analogWrite(VERDE, 0);
  }
}

ho scritto questo semplice programma spero si possa capire, tramite un telecomando IR comando 3 led collegati ai pin PWM 9-10-11, che corrispondono ai tasti 1-2-3 del telecomando, con i tasti - e + vario la luminosità dei led, aumentando o diminuendo la modulazione di impulso (PWM).
Il problema si riscontra quando vado ad accendere il led collegato al pin 10 con la modulazione di impulso variata (cioè che nn corrisponde a quella prestabilita nel setup, che è di 255), se l'accendo con la luminosità gia variata la scheda nn risponde piùe i led accesi rimangono tali, se invece vario la luminosita con solo il led collecato al pin 10 il led si spegne, ho provato a cambiare i pin dei led e il problema si riscontra solo con il 10 e il 3.
Dimenticavo ho un scheda arduino uno e uso un lede rgb.
Mi sapreste spiegare la motivazione di questa anomalia
Pages: [1]