Show Posts
Pages: [1] 2 3
1  International / Hardware / Re: Arduino 2560 problema comunicazione on: January 31, 2013, 05:26:01 am
Ecco qui, (Grazie mille!!!)

Code:
#include <Timer.h>
#include <Keypad.h>
#include <LiquidCrystal.h>
#include <Tone.h>
#define pound = 14
byte block[8] =

 {B11111,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111};


Tone tone1;
int Scount = 0; // count seconds
int Mcount = 0; // count minutes
int Hcount = 0; // count hours
int Dcount = 0; // count days
int val = 0;
long secMillis = 0; // store last time for second
long interval = 1000; // interval for seconds
char password[4];
int currentLength = 0;
int i = 0;
char entered[4];

LiquidCrystal lcd(12, 13, 11, 10, 9, 8);
const byte ROWS = 4; //four rows
const byte COLS = 4; //three columns
char keys[ROWS][COLS] =
 
 
  {
  {'1','2','3','A'},
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'*','0','#','D'}
  };
 
 
byte rowPins[ROWS] = {
  3, 2, 1, 0}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {
  7, 6, 5, 4}; //connect to the column pinouts of the keypad

Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
void setup()
{
   
  lcd.createChar(7,block);
  tone1.begin(A0);
  lcd.begin(20, 4);
  Serial.begin(9600);
  lcd.clear();
  lcd.setCursor(1,0);
  lcd.print("Enter disarm code: ");
  while (currentLength < 4)
  {
  lcd.setCursor(currentLength + 6, 1);
  lcd.cursor();
  char key = keypad.getKey();
  key == NO_KEY;
  if (key != NO_KEY)
 
 {lcd.print(key);
  password[currentLength] = key;
  currentLength++;
  delay(200);}
  } 
 
  if (currentLength == 4)
    {
    lcd.noCursor();
    lcd.clear();
    lcd.home();
    lcd.setCursor(0,1);
    lcd.print("<<<<<BOMB ARMED>>>>> ");
    lcd.setCursor(6,2);
    lcd.print(password[0]);
    lcd.print(password[1]);
    lcd.print(password[2]);
    lcd.print(password[3]);
    delay(3000);
    lcd.clear();
    currentLength = 0;}
}


void loop()
 {
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("Mixing chemical");
  lcd.setCursor(0,1);
  lcd.print("solution");
  //for (int positionCounter = 0; positionCounter < 24; positionCounter++) {
  // scroll one position left:
  //lcd.scrollDisplayLeft();
  delay(300);
  //}
  lcd.home();
  lcd.setCursor(0,2);
  for (int x=0; x < 21 ; x++)
 
  {delay(1000);
  lcd.write(7);}
 
  char key2 = keypad.getKey(); // get the key
  lcd.setCursor(0,4);

  if (key2 != NO_KEY)
  {
    while (key2 == NO_KEY)
   
    {key2 = keypad.getKey();}
   
    if (key2 != NO_KEY)
   
     {lcd.clear();
      lcd.setCursor(0,0);
      lcd.print("Enter Code: ");
      while (currentLength < 4){
        lcd.setCursor(currentLength + 6, 1);
        lcd.cursor();
        char key2 = keypad.getKey();
        if (key2 != NO_KEY)
       
          {lcd.print(key2);
          entered[currentLength] = key2;
          currentLength++;
          delay(200);
          lcd.noCursor();
          lcd.setCursor(currentLength + 5, 1);
          lcd.print("*");
          lcd.setCursor(currentLength + 6, 1);
          lcd.cursor();}
      } 
     
      if (currentLength == 4){
        if (entered[0] == password[0] && entered[1] == password[1] && entered[2] == password[2] && entered[3] == password[3])
        {
          lcd.noCursor();
          lcd.clear();
          lcd.home();
          lcd.print("Disarm loading...");
          currentLength = 0;
          delay(10000);
          lcd.setCursor(0,1);
          lcd.print("STATUS:");
          delay(5000);
          lcd.setCursor(9,1);
          lcd.print("<DISARMED>");
          //delay(5000);
        }
        else
        {

          lcd.noCursor();
          lcd.clear();
          lcd.home();
          lcd.print("Protection mode");
          lcd.setCursor(0,1);
          lcd.print("TIME - 1:30 ");
          if (Mcount < 14)
          {
            Mcount = Mcount + 1;
          }
          if (Scount < 59)
          {
            Scount = Scount + 30;
          }
          delay(1500);
          currentLength = 0;
        }
      }
    }
  }
}

void timer(){
  if ( Mcount >= 15 )
  {
    while ( Mcount >= 15)
    {
      lcd.noCursor();
      lcd.clear();
      lcd.home();
      lcd.print("YOU ARE DIED!!!");
      tone1.play(NOTE_A2, 200);
      tone1.play(NOTE_A2, 200);
      delay(10); // waits for a second
      tone1.play(NOTE_A2, 200);
      delay(10); // waits for a second
      tone1.play(NOTE_A2, 200);
      delay(10); // waits for a second
      tone1.play(NOTE_A2, 200);
      delay(10); // waits for a second

      char key4 = keypad.getKey();
      if (key4 != NO_KEY){
        while (key4 == NO_KEY){
          key4 = keypad.getKey();
        }
        if (key4 = '#')
        {
          lcd.clear();
          lcd.print("Reset the Bomb");
        }
      }
    }
    if ( Mcount == 60) // if Mcount is 60 do this operation
   
     {delay (10); // good place to fine tune timing 32
      Mcount = 0; // reset Mcount
      Hcount ++;}
   
    if (Hcount> 23)
   
     {Dcount++;
      Hcount = 0;} // have to reset Hcount to "0" after 24hrs
   

    lcd.setCursor (0,4); // sets cursor to 2nd line
    lcd.print ("Timer: ");
    lcd.print (Dcount);
    lcd.print (":");
    lcd.print (Hcount);
    lcd.print (":");
    lcd.print (Mcount);
    lcd.print (":");
    lcd.print (Scount);
    if (Scount >59) // if 60 do this operation
   
      {Mcount ++; // add 1 to Mcount
      Scount = 0; // reset Scount
      delay (58);} // changes ms per min
   
    if (Scount < 60) // do this oper. 59 times
   
      {unsigned long currentMillis = millis();//
      delay (988); // changing by one = 60 ms a min
      if(currentMillis - secMillis > interval)
      {tone1.play(NOTE_G5, 200);
        secMillis = currentMillis;
        Scount ++; // add 1 to Scount
        delay(10); // waits for a second
        delay(10);}} // waits for a second
       
     
   
  }
}




2  International / Hardware / Re: Arduino 2560 problema comunicazione on: January 31, 2013, 03:18:32 am
Resoconto finale:

Ho provato con dei vecchi IDE (stesso problema)
Ho provato ad installarlo su Linux (Più veloce ma alla fine stesso problema)
Ho provato a cercare una libreria aggiornata dell LCD (non ho trovato niente)

Quindi che fare ora?
Dite che è un problema del firmare del 8u2?
Come lo aggiorno eventualmente? Devo fare dei contatti volanti?

Ciao a tutti
3  International / Hardware / Arduino 2560 problema comunicazione on: January 30, 2013, 09:15:03 am
Ciao,

Ho un'arduino 2560 e ho qualche problema di "timeout()"
Ho provato a modificare il file boards.txt con varie ed evantuali dal forum ma nulla di che sempre lo stesso problema,
inizialmente lo sketch si carica fino al 99,9% poi si pianta per delle ore.
Dopo un bel po esce la simpatica scritta timeout()....

nello specifico:

avrdude: Recv:
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: Send: . [1b] . [2e] . [00] . [01] . [0e] . [01] ; [3b]


Ho notato una cosa però... Se carico sketch senza la libreria lcd tutto funziona alla perfezione, viceversa si pianta tutto...
Che fare? Devo modificare la libreria?
(Ps con il 2009 funziona tutto bene...)
(PPS Ho vindows 7 64bit)

Ciao grazie...
4  International / Software / Re: Codice problematico per timer ordigno finto softair on: January 27, 2013, 01:05:49 pm
Ok, provo a rifare tutto e poi vediamo che succede...
Per ora grazie!
5  International / Software / Re: Mil sim fake time bomb on: January 26, 2013, 07:15:00 pm
Ma va!!! Siamo solo dei pazzi che si prendono troppo sul serio  smiley-grin

Quache idea?
Ps dimenticavo ch ho aggiunto anche un buzzer, ma non è troppo rilevante...
6  International / Software / Codice problematico per timer ordigno finto softair on: January 26, 2013, 02:58:02 pm
Ciao a tutti, mi sto cimentando nella costruzione di una replica giocattolo di ordigno a tempo.
E' composta così:

Arduino 2009 (poi implementerò un mega 2560)
LCD 20x4 parallelo color blu
keypad 4x4

Il software dovrebbe far sì che prima viene richiesto il codice, la bomba si arma, parte il timer e nel mentre si dovrebbe riuscire ad immettere un codice di disinnesco. Detto ciò non riesco assolutamente a far apparire il timer che faccia il conto alla rovescia!!!

Ho provato in tutte le maniere ma faccio solo dei pasticci, ormai è quasi 3 settimane che litigo con il libro di arduino e il mio cervello, mi date una mano per favore?

ecco il codice

Code:
//#include <Event.h>
#include <Timer.h>
#include <Keypad.h>
#include <LiquidCrystal.h>
#include <Tone.h>
#define pound = 14
Tone tone1;
int Scount = 0; // count seconds
int Mcount = 0; // count minutes
int Hcount = 0; // count hours
int Dcount = 0; // count days
int val = 0;
long secMillis = 0; // store last time for second
long interval = 1000; // interval for seconds
char password[4];
int currentLength = 0;
int i = 0;
char entered[4];

LiquidCrystal lcd(12, 13, 11, 10, 9, 8);
const byte ROWS = 4; //four rows
const byte COLS = 4; //three columns
char keys[ROWS][COLS] = {
  {
    '1','2','3','A'  }
  ,
  {
    '4','5','6','B'  }
  ,
  {
    '7','8','9','C'  }
  ,
  {
    '*','0','#','D'  }
};
byte rowPins[ROWS] = {
  3, 2, 1, 0}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {
  7, 6, 5, 4}; //connect to the column pinouts of the keypad

Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );



void setup(){

  tone1.begin(A0);
  lcd.begin(20, 4);
  Serial.begin(9600);
  lcd.clear();
  lcd.setCursor(1,0);
  lcd.print("Enter disarm code: ");
  while (currentLength < 4){
    lcd.setCursor(currentLength + 6, 1);
    lcd.cursor();
    char key = keypad.getKey();
    key == NO_KEY;
    if (key != NO_KEY){
      lcd.print(key);
      password[currentLength] = key;
      currentLength++;
      delay(200);
    }
  }
  if (currentLength == 4){
    lcd.noCursor();
    lcd.clear();
    lcd.home();
    lcd.setCursor(0,1);
    lcd.print("<<<<<BOMB ARMED>>>>> ");
    lcd.setCursor(6,2);
    lcd.print(password[0]);
    lcd.print(password[1]);
    lcd.print(password[2]);
    lcd.print(password[3]);
    delay(3000);
    lcd.clear();
    currentLength = 0;
  }
}

void loop(){
  

 
  char key2 = keypad.getKey(); // get the key
  lcd.setCursor(0,4);

  if (key2 != NO_KEY)
  {
    while (key2 == NO_KEY)
    {
      key2 = keypad.getKey();
    }
    if (key2 != NO_KEY)
    {
      lcd.clear();
      lcd.setCursor(0,0);
      lcd.print("Enter Code: ");
      while (currentLength < 4){
        lcd.setCursor(currentLength + 6, 1);
        lcd.cursor();
        char key2 = keypad.getKey();
        if (key2 != NO_KEY)
        {
          tone1.play(NOTE_A6, 200);
          lcd.print(key2);
          entered[currentLength] = key2;
          currentLength++;
          delay(200);
          lcd.noCursor();
          lcd.setCursor(currentLength + 5, 1);
          lcd.print("*");
          tone1.play(NOTE_G5, 200);
          lcd.setCursor(currentLength + 6, 1);
          lcd.cursor();
        }
      }
      if (currentLength == 4){
        if (entered[0] == password[0] && entered[1] == password[1] && entered[2] == password[2] && entered[3] == password[3])
        {
          lcd.noCursor();
          lcd.clear();
          lcd.home();
          lcd.print("Disarm loading...");
          currentLength = 0;
          delay(10000);
          lcd.setCursor(0,1);
          lcd.print("STATUS:");
          delay(5000);
          lcd.setCursor(9,1);
          lcd.print("<DISARMED>");
          //delay(5000);
        }
        else
        {

          lcd.noCursor();
          lcd.clear();
          lcd.home();
          lcd.print("Protection mode");
          lcd.setCursor(0,1);
          lcd.print("TIME - 1:30 ");
          if (Mcount < 14)
          {
            Mcount = Mcount + 1;
          }
          if (Scount < 59)
          {
            Scount = Scount + 30;
          }
          delay(1500);
          currentLength = 0;
        }
      }
    }
  }
}

void timer(){
  if ( Mcount >= 15 )
  {
    while ( Mcount >= 15)
    {
      lcd.noCursor();
      lcd.clear();
      lcd.home();
      lcd.print("YOU ARE DIED!!!");
      tone1.play(NOTE_A2, 200);
      tone1.play(NOTE_A2, 200);
      delay(10); // waits for a second
      tone1.play(NOTE_A2, 200);
      delay(10); // waits for a second
      tone1.play(NOTE_A2, 200);
      delay(10); // waits for a second
      tone1.play(NOTE_A2, 200);
      delay(10); // waits for a second

      char key4 = keypad.getKey();
      if (key4 != NO_KEY){
        while (key4 == NO_KEY){
          key4 = keypad.getKey();
        }
        if (key4 = '#')
        {
          lcd.clear();
          lcd.print("Reset the Bomb");
        }
      }
    }
    if ( Mcount == 60) // if Mcount is 60 do this operation
    {
      delay (10); // good place to fine tune timing 32
      Mcount = 0; // reset Mcount
      Hcount ++;
    }
    if (Hcount> 23)
    {
      Dcount++;
      Hcount = 0; // have to reset Hcount to "0" after 24hrs
    }

    lcd.setCursor (0,4); // sets cursor to 2nd line
    lcd.print ("Timer: ");
    lcd.print (Dcount);
    lcd.print (":");
    lcd.print (Hcount);
    lcd.print (":");
    lcd.print (Mcount);
    lcd.print (":");
    lcd.print (Scount);
    if (Scount >59) // if 60 do this operation
    {
      Mcount ++; // add 1 to Mcount
      Scount = 1000; // reset Scount
      delay (58); // changes ms per min
    }
    if (Scount < 60) // do this oper. 59 times
    {
      unsigned long currentMillis = millis();//
      delay (988); // changing by one = 60 ms a min
      if(currentMillis - secMillis > interval)
      {
        tone1.play(NOTE_G5, 200);
        secMillis = currentMillis;
        Scount ++; // add 1 to Scount
        delay(10); // waits for a second
        delay(10); // waits for a second
      }
    }
  }
}




7  International / Generale / Re: Compatibilità touch screen on: May 09, 2012, 03:48:30 pm
Il mio problema è che quando collego le cose lo faccio a "stima" guardo Vcc, Ground e attacco i pin che ci sono nel codice dell'ide. Ignoro completamente la funzione di tutti gli altri pin! Dico che è semplicemente un bel problema! Ho provato con degli specchietti di altri display con lo stesso driver, ma il problema è che ogni fabbricante mette i pin e li nomina come gli pare e piace!

Booooooooh!
8  International / Generale / Re: Compatibilità touch screen on: May 09, 2012, 02:20:37 pm
Ho trovato le librerie, ma il problema adesso è che non riesco proprio a capire come va collegato!
Qualcuno può aiutarmi? (collegamento dei 40pin che funzioni con gli esempi della libreria)

Librerie:
http://www.henningkarlsen.com/electronics/library.php?id=51
(se non ho capito male queste dovrebbero essere universali)

Premetto che uso un mega 2560 e se non ho capito male dovrebbe essere un problema (non chiedetemi perchè...)

vi allego il mio data sheet:
9  International / Generale / Compatibilità touch screen on: May 09, 2012, 12:05:07 pm
Questo touch screen è compatibile con un'arduino mega 2560?
http://www.ebay.it/itm/170743032432?ssPageName=STRK:MEWAX:IT&_trksid=p3984.m1423.l2649#ht_2692wt_956

Se si avete idea dove posso trovare le apposite librerie?

Grazie
10  International / Generale / Re: Collegamento Touch screen on: April 03, 2012, 01:33:16 pm
Che bello quel modulo :-)
Pensa che da stupido ho preso questo lcd pensando erroneamente di metterlo direttamente sul mega...
11  International / Generale / Re: Collegamento Touch screen on: April 01, 2012, 05:41:01 pm
Che dite può funzionare così ?
I pin nc gli ho messi su un 3,3V perchè ho letto da qualche parte che andava fatto così...
E' giusto? L' alimentazione quadra?
Grazie!
12  International / Generale / Re: Collegamento Touch screen on: April 01, 2012, 01:13:17 pm
Ho finito di lavorare adesso, lo provo in questi giorni e ti faccio sapere!
13  International / Generale / Re: Collegamento Touch screen on: April 01, 2012, 02:35:55 am
Sei il miglioreeeeeeeeeeeee!!!!!
Grande!
14  International / Generale / Re: Collegamento Touch screen on: March 31, 2012, 02:43:53 pm
E' quello che ho fatto, ma ho solo trovato persone come me che non ci capiscono una mazza e facevano le stesse domande.
Proverò e riproverò finchè non salta fuori qualcosa di buono. Poi visto sto delirio farò un bel fritzing e lo spammo ovunque vedo sto dannato display!
15  International / Generale / Re: Collegamento Touch screen on: March 31, 2012, 10:45:40 am
Il problema è che non riesco a capire dallo schema come fare i collegamenti.
Non sono un perito elettronico purtroppo  smiley-grin
Grazie
Pages: [1] 2 3