Pages: [1]   Go Down
Author Topic: Problema con passaggio da ver 0023 a ver 1  (Read 706 times)
0 Members and 1 Guest are viewing this topic.
PN (I)
Offline Offline
Newbie
*
Karma: 0
Posts: 2
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao a tutti, sono nuovo del mondo arduino e devo dire che mi sta piacendo molto. smiley-lol

Al momento mi sto limitando a studiare i file di esempio presenti, compilarli e vedere il risultato.

Oggi ho fatto l'aggiornamento del tool di sviluppo alla versione 1 ma con mio grande stupore tutti gli esempi che fanno capo al disply lcd che mi sono procurato non mi si compilano piu' mentre con la versione vecchia tutto ok.

In fase di compilazione mi dice che non riesce a trovare il file Wconstants.h. Ho fatto una ricerca e ho visto che tale file non e' presente nella versione 1 mentre e' presente nella versione 0023.

Posso copiare il file della 0023 nella directory relativa della versione 1 oppure no?
C'e' un altro modo per ovviare al problema?

Grazie
Logged

Global Moderator
Italy
Online Online
Brattain Member
*****
Karma: 312
Posts: 21601
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Tutte le vecchie librerie devono essere riconvertite per usare la nuova versione 1.0.
Al momento puoi ovviare creando un file WProgram.h in /hardware/arduino/cores/arduino che contenga solo l'inclusione di Arduino.h.
In questo modo le vecchie libr dovrebbero funzionare.
Logged


Verona
Offline Offline
Jr. Member
**
Karma: 0
Posts: 79
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ti basta creare un file in "Arduino 1.0\hardware\arduino\cores\arduino" che si chiama "Wprogram.h" e dentro ci scrivi solo:

#include "Arduino.h"

ps. siamo entrambi al primo post.. niente male..
Logged

PN (I)
Offline Offline
Newbie
*
Karma: 0
Posts: 2
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Grazie a tutti e due della velocissima risposta, domattina faro' subito la prova.

La prossima volta prometto che leggeró il change note della versione prima di fare domande del genere smiley-grin e non dopo averla fatta.
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 85
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Mi aggiungo un attimo al post per esporvi il mio problema con la nuova IDE

Nel passaggio dalla 023 alla 1.0 mi è capitato che un codice funzionante e testato su un arduino 1 caricato con la 023 se caricato con la 1.0 nn funziona...
per caso è capitato ad altri qualcosa del genere???
Logged

Lamezia Terme
Offline Offline
Shannon Member
****
Karma: 410
Posts: 11973
Le domande di chi vuol imparare rappresentano la sua sete di sapere
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Mi aggiungo un attimo al post per esporvi il mio problema con la nuova IDE

Nel passaggio dalla 023 alla 1.0 mi è capitato che un codice funzionante e testato su un arduino 1 caricato con la 023 se caricato con la 1.0 nn funziona...
per caso è capitato ad altri qualcosa del genere???
Beh, sembrerebbe il problema degli altri, fai la stessa prova, e comunque dire "non funziona" non è che sia il massimo per chiedere una dritta.
Logged

Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

0
Offline Offline
Shannon Member
****
Karma: 117
Posts: 10097
:(){:|:&};: TOX id: fcb8e918bef08581e23f6ddf9d4dba77697c25b217bf372736ed959a95fde36df5b8c5b90fbb
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

dovresti presentare il codice per riprodurre il bug... così può partire la caccia!  smiley-mr-green
Logged

my Arduino code: https://github.com/lestofante/arduinoSketch
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

0
Offline Offline
Faraday Member
**
Karma: 38
Posts: 5601
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

limitatamente al cambio nome di wprogram mi chiedevo perche' non inserire di default nella 1.0 il file di richiamo ad arduino.h

e' solo per fare una forzatura ?
per costringere i creatori di librerie ad aggiornarle ?

infine, perche' cambiare il nome a questo file ? wiring war ?
Logged

- [GUIDA] IDE1.x - Nuove Funzioni - Sketch Standalone - Bootloader - VirtualBoard
http://arduino.cc/forum/index.php/topic,88546.0.html
- [LIBRERIA] ST7032i LCD I2C Controller Library
http://arduino.cc/forum/index.php/topic,96163.0.html

0
Offline Offline
Shannon Member
****
Karma: 117
Posts: 10097
:(){:|:&};: TOX id: fcb8e918bef08581e23f6ddf9d4dba77697c25b217bf372736ed959a95fde36df5b8c5b90fbb
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

secondo me
Quote
per costringere i creatori di librerie ad aggiornarle

Quote
infine, perche' cambiare il nome a questo file ? wiring war ?
secondo me è meglio, soprattuto che ora esce la 2 e avrà il suo .h necessario... Questo permetterà agli IDE esterni come eclipse di funzionare senza troppi problemi, che già ne hanno abbastanza per settarli :-)
Logged

my Arduino code: https://github.com/lestofante/arduinoSketch
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Offline Offline
Jr. Member
**
Karma: 0
Posts: 85
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Scusate...sono sempre di corsa e nn mi sono spiegato bene...purtroppo devo scappare anche ora ma per stasera cerco di esporvi piu chiaramente quale è stato il mio problema...
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 85
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Allora ecco il problema che ho riscontrato...
Innanzitutto comincio con il postarvi il codice...Il codice che posto è quello scritto per la v022...nella 1.0 vanno cambiati i nomi delle librerie Ethernet Client e Server...

Code:
//Le librerie per la comunicazione SPI servono per il
//corretto funzionamento della libreria Ethernet
#include <SPI.h>
//Importo le librerie per l'Arduino networking
#include <Client.h>
#include <Ethernet.h>
#include <Server.h>
#include <Udp.h>


//Setto alcune costanti
const unsigned int BAUD_RATE = 9600;
const unsigned int SERVER_PORT = 80;
const unsigned int TAPPARELLA1_OPEN_PIN = 2;
const unsigned int TAPPARELLA1_CLOSE_PIN = 3;
const unsigned int TAPPARELLA2_OPEN_PIN = 4;
const unsigned int TAPPARELLA2_CLOSE_PIN = 5;
const unsigned int TAPPARELLA3_OPEN_PIN = 6;
const unsigned int TAPPARELLA3_CLOSE_PIN = 7;

//Setto l'indirizzo MAC
byte mac[] = {0xDE,0xAD,0xBE,0xEF,0xFE,0xED};  
//Setto l'indirizzo IP
byte ip[] = { 192,168,1,31};
//Setto il gateway
byte gateway[] = {192,168,1,1};
//Setto la subnetmask
byte subnetmask[] = {255,255,255,192};

//Creo il server
Server server = Server(SERVER_PORT);

//Comandi
String TAPPARELLA1_STRING = String("?Tapparella1=");
String TAPPARELLA2_STRING = String("?Tapparella2=");
String TAPPARELLA3_STRING = String("?Tapparella3=");
String ALL_STRING = String("?all=");

String OPEN_STRING = String("Open");
String CLOSE_STRING = String("Close");

void send_page(Client a_client){
  a_client.println("HTTP/1.1 200 OK");
  a_client.println("Content-Type: text/html");
  a_client.println();
  a_client.print("<html><head>");
  a_client.print("<title>Arduino Webserver</title>");
  a_client.println("</head>");
  a_client.print("<body>");
  a_client.println("<div style='width:240px; height:320px;'>"); //risoluzione per nokia e66 240x320
  a_client.println("<center><font color='#2076CD'>ARDUINO</font color></center>");
  a_client.println("<br>");
  a_client.println("<table><tr>");
  a_client.println("<td><font face='Verdana' size='2'>Controllo n1</font></td>");
  a_client.println("<td><form method=get><input type=submit name=Tapparella1 value='Open'></form></td>");
  a_client.println("<td><form method=get><input type=submit name=Tapparella1 value='Close'></form></td>");
  a_client.println("</tr><tr><td><font face='Verdana' size='2'>Controllo n2</font></td>");
  a_client.println("<td><form method=get><input type=submit name=Tapparella2 value='Open'></form></td>");
  a_client.println("<td><form method=get><input type=submit name=Tapparella2 value='Close'></form></td>");
  a_client.println("</tr><tr><td><font face='Verdana' size='2'>Controllo n3</font></td>");
  a_client.println("<td><form method=get><input type=submit name=Tapparella3 value='Open'></form></td>");
  a_client.println("<td><form method=get><input type=submit name=Tapparella3 value='Close'></form></td>");
  a_client.println("</tr><tr><td><font face='Verdana' size='2'>Tutti</font></td>");
  a_client.println("<td><form method=get><input type=submit name=all value='Open'></form></td>");
  a_client.println("<td><form method=get><input type=submit name=all value='Close'></form></td>");
  a_client.println("</tr><table></div></body></html>");
  return;
}

void setup(){
  
  //inizializzo le comunicazioni della schedina
  Ethernet.begin(mac,ip,gateway,subnetmask);
  Serial.begin(BAUD_RATE);
  server.begin();
  
  pinMode(TAPPARELLA1_OPEN_PIN,OUTPUT);
  pinMode(TAPPARELLA1_CLOSE_PIN,OUTPUT);
  pinMode(TAPPARELLA2_OPEN_PIN,OUTPUT);
  pinMode(TAPPARELLA2_CLOSE_PIN,OUTPUT);
  pinMode(TAPPARELLA3_OPEN_PIN,OUTPUT);
  pinMode(TAPPARELLA3_CLOSE_PIN,OUTPUT);
  
  Serial.println("Waiting for connection...");
  Serial.println();
  
  digitalWrite(TAPPARELLA3_CLOSE_PIN,HIGH);
  delay(1000);
  digitalWrite(TAPPARELLA3_CLOSE_PIN,LOW);
  
}

void loop(){
  //Controllo se ci sono messaggi in arrivo dal client
  Client client = server.available();
  //se rivela una connessione da un client
  if(client){
    //Stringa contenente il messaggio in arrivo
    String incoming_string = String("");
    
    while(client.connected()){
      
      //Se sono disponibii byte allora leggi il byte e aggiungilo in coda alla stringa
      while(client.available()){
        char c = client.read();
        incoming_string.concat(c);
      }
      
      Serial.println(incoming_string);
      Serial.println();
      /**************************************************************/
      /**************GESTIONE COMANDI TAPPARELLA 1*******************/
      /**************************************************************/
      
      if(incoming_string.indexOf(TAPPARELLA1_STRING) > -1){
        Serial.println("Comando x Tapparella 1");
        
        int comand_index = incoming_string.indexOf(TAPPARELLA1_STRING) + TAPPARELLA1_STRING.length() ;
        String command = incoming_string.substring(comand_index,(comand_index+6));
        
        Serial.println(comand_index, DEC);
        Serial.println(command);
        
        if(command.startsWith(OPEN_STRING)){
          digitalWrite(TAPPARELLA1_OPEN_PIN,HIGH);
          delay(5000);
          digitalWrite(TAPPARELLA1_OPEN_PIN,LOW);  
        }
       if(command.startsWith(CLOSE_STRING)){
         digitalWrite(TAPPARELLA1_CLOSE_PIN,HIGH);
         delay(5000);
         digitalWrite(TAPPARELLA1_CLOSE_PIN,LOW);
       }
      }
      /**************************************************************/
      /**************GESTIONE COMANDI TAPPARELLA 2*******************/
      /**************************************************************/
      if(incoming_string.indexOf(TAPPARELLA2_STRING) > -1){
        
        Serial.println("Comando x Tapparella 2");
        
        
        int comand_index = incoming_string.indexOf(TAPPARELLA2_STRING) + TAPPARELLA2_STRING.length() ;
        String command = incoming_string.substring(comand_index);
        
        Serial.println(comand_index, DEC);
        Serial.println(command);
        
        if(command.startsWith(OPEN_STRING)){
          digitalWrite(TAPPARELLA2_OPEN_PIN,HIGH);
          delay(5000);
          digitalWrite(TAPPARELLA2_OPEN_PIN,LOW);  
        }
       if(command.startsWith(CLOSE_STRING)){
         digitalWrite(TAPPARELLA2_CLOSE_PIN,HIGH);
         delay(5000);
         digitalWrite(TAPPARELLA2_CLOSE_PIN,LOW);
       }
      }
      /**************************************************************/
      /**************GESTIONE COMANDI TAPPARELLA 3*******************/
      /**************************************************************/
      if(incoming_string.indexOf(TAPPARELLA3_STRING) > -1){
        
        Serial.println("Comando x Tapparella 3");
        
        
        int comand_index = incoming_string.indexOf(TAPPARELLA3_STRING) + TAPPARELLA3_STRING.length() ;
        String command = incoming_string.substring(comand_index);
        
        Serial.println(comand_index, DEC);
        Serial.println(command);
        
        if(command.startsWith(OPEN_STRING)){
          digitalWrite(TAPPARELLA3_OPEN_PIN,HIGH);
          delay(5000);
          digitalWrite(TAPPARELLA3_OPEN_PIN,LOW);  
        }
       if(command.startsWith(CLOSE_STRING)){
         digitalWrite(TAPPARELLA3_CLOSE_PIN,HIGH);
         delay(5000);
         digitalWrite(TAPPARELLA3_CLOSE_PIN,LOW);
       }
      }
      
      }
      send_page(client);
      delay(10);
      client.stop();
      Serial.println("Disconnected...");
      Serial.println();
      delay(10);
    }
  }
}

Il codice contiene una paginetta web che viene inviata dall'arduino al client e permette tramite pulsanti di attivare alcune uscite digitali della schedina. Essendo in possesso di un ETH SHIELD privo di SD ho lasciato la pagina sull'arduino.
Caricando questo codice con la versione 022 dell'ide su un arduino uno il tutto funziona...Caricandolo con la versione 1.0 l'arduino va in blocco o meglio ogni volta che riceve un comando si resetta...Come ultima prova ho caricato con la versione 1.0 dell'IDE lo stesso codice che provoca il continuo reset di arduino 1 su un MEGA e il tutto funziona con un tranquillamente

Sono arrivato alla conclusione che il problema sia nella RAM dell' ATMEGA e che l'arduino si resetti perche la RAM si riempie...Secondo voi è possibile che nel passaggio dalla 022 alla 1.0 sia cambiato nel compilatore qualcosa riguardo alla "gestione" della RAM???Aspetto una vostra analisi grazie (scusate ma nn conosco molto esperto su come lavora il compilatore e au quali variabili vanno in RAM)...
Logged

Offline Offline
Edison Member
*
Karma: 38
Posts: 1897
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hai rubato un pezzo del mio sketch del BaBBuino! smiley-grin
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 85
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

il codice è tutto di produzione propria te le posso garantire  smiley-razz
Idee per quello che ho spiegato???
Logged

Pages: [1]   Go Up
Jump to: