Show Posts
Pages: 1 2 [3] 4
31  International / Hardware / Re: convertitore usb seriale non carica sketch on: December 09, 2012, 10:12:44 am
ho appena acquistato un altro convertitore usb/seriale e tutto funziona alla perfezione anche senza le resistenze. L'importante é il condensatore 1uF da mettere in serie con il pin RST del convertitore ed il pin1 dell'ATMEGA.

Ora, dato che ho aggiornato il firmware del vecchio convertitore, volevo chiedervi dove andare a prendere il firmware originale. Ve lo chiedo perché il nuovo convertitore usb/seriale ha hardware id: USB\VID_2341&PID_003B mentre il vecchio: USB\VID_2341&PID_0001, anche se entrambi vengono riconosciuti come Arduino UNO! E' un problema?

32  International / Hardware / I2C - passare valori dallo Slave al Master on: December 09, 2012, 09:16:57 am
Ciao. Sto implementando una comunicazione I2C tra due chip Atmega 328P, il cui circuito é su breadboard, e riesco a passare un valore dal Master allo Slave. Se poi voglio ottenere un certo valore dallo Slave, mediante un Wire.requestFrom() ottengo valori strani.
Oltre alla libreria Wire.h utilizzo anche la libreria I2C_Anything.h per convertire i valori letti e scritti, da byte a integer.
Posto il codice:
[Master]
Code:
#include <Wire.h>
#include <I2C_Anything.h>

#define LED 13
const byte SLAVE_ADDRESS = 42;
int timeBlink;
int blinkMaster;
byte highByte;
byte lowByte;
boolean checkX=false;

void setup()
{
  Serial.begin(115200);
  pinMode(LED,OUTPUT);
  Wire.begin ();
   timeBlink = 2000;
   
    Wire.beginTransmission (SLAVE_ADDRESS);
    I2C_writeAnything (timeBlink);
    Wire.endTransmission ();
    blinkMaster=0;
     
}  // end of setup

void loop()
{
  delay(1000);
  if(timeBlink > 0){
  timeBlink-=100;
  }else{
    timeBlink=2000;
   
  }
   timeBlink--;
   Wire.beginTransmission(42);      //inizio comunicazione
   I2C_writeAnything(timeBlink);    //scrivo timeBlink sullo stream
   Wire.endTransmission();           //chiudo comunicazione
   
    Wire.requestFrom(42,2);       //Richiedo 2 byte allo Slave
   // while(Wire.available()){
      I2C_readAnything(blinkMaster); // leggo i dati inviati dallo slave
   // }
    Serial.print("receive from SLAVE=");
    Serial.println(blinkMaster);
 }  /

[Slave]
Code:
#include <Wire.h>
#include <I2C_Anything.h>
#define LED 13
const byte MY_ADDRESS = 42;
int timeBlink;
void setup()
{
  Wire.begin (MY_ADDRESS);
  Serial.begin (115200);
  Wire.onReceive (receiveEvent);
  Wire.onRequest(requestEvent);
  pinMode(LED,OUTPUT);
   timeBlink=2000;

}  // end of setup


void loop()
{
  delay(1000);
   
Serial.print("slave timeblink="); 
Serial.println(timeBlink);


void receiveEvent (int howMany) //routine per dati in arrivo dal master
 {
  while(Wire.available()){
   I2C_readAnything (timeBlink);
   
  }
 
 }
 
 void requestEvent()
{
  //questo evento viene generato quando il master
  //richiede ad uno specifico slave
  //una richiesta di dati
 
  //spedisco il dato al Master
  I2C_writeAnything(timeBlink);
  Serial.print ("Sended to master requested = ");
    Serial.println (timeBlink);
 
}


La libreria I2C_Anything.h ha questo codice:
Code:
#include <Arduino.h>
#include <Wire.h>

template <typename T> int I2C_writeAnything (const T& value)
  {
    const byte * p = (const byte*) &value;
    unsigned int i;
    for (i = 0; i < sizeof value; i++)
          Wire.write(*p++);
    return i;
  }  // end of I2C_writeAnything

template <typename T> int I2C_readAnything(T& value)
  {
    byte * p = (byte*) &value;
    unsigned int i;
    for (i = 0; i < sizeof value; i++)
          *p++ = Wire.read();
    return i;
  }  // end of I2C_readAnything

Il problema é che ottengo in risposta dallo Slave valori tipo -249, -250 ecc, anziché valori del tipo 2000, 1900 ecc
33  International / Hardware / Re: Idea progetto con porta USB on: December 01, 2012, 10:37:35 pm
La soluzione di prendere i 12V dall'alimentatore del tuo pc é la piú plausibile. Oppure se giri per casa troverai sicuramente un trasformatore che in output ti restituisca 12V o giu' di li. Guarda pure gli alimentatori degli hard disk esterni sono per la maggior parte a 12V (io uso uno di questi).
34  International / Hardware / Re: Riprogrammare chip 8U2 convertitore usb/seriale in DFU mode on: December 01, 2012, 10:22:52 pm
In effetti ho provato a riprogrammarlo con l'ultimo firmware ver 00.01 é il problema persiste. Ho anche passato diversi getti di aria calda con la pistola sverniciatrice, con la speranza che si ripristinassero i falsi contatti!

Cmq per chi volesse mettere in DFU mode il convertitore Usb/seriale in questione deve mettere in corto i piedini 1 e GND del connettore ICSP presente sulla schedina. Poi bisogna seguire questa guida:http://andrewmemory.wordpress.com/2011/04/14/upgrading-the-arduino-uno-8u2-using-flip/

In allegato c'é il firmware che ho usato per l'update.
35  International / Hardware / Riprogrammare chip 8U2 convertitore usb/seriale in DFU mode on: November 30, 2012, 10:55:34 pm
Ciao a tutti, dato che per ora non esiste soluzione per far funzionare il mio convertitore usb/seriale, per poter caricare gli sketch su un arduino standalone, realizzato su breadboard, ho deciso di provare almeno a fare un update del firmware del chip 8U2 che equipaggia tale convertitore. (http://www.robot-italy.com/it/usb-to-serial-converter.html)

Navigando in rete ho trovato tutti esempi per riprogrammare il chip 8U2 presente sulla scheda Arduino, ma nulla riguardo il mio caso specifico. Per esempio in queste guide si illustra come fare, ma non so dove porre quella resistenza visto che il circuito e' diverso:
1)http://arduino.cc/en/Hacking/DFUProgramming8U2
2)http://andrewmemory.wordpress.com/2011/04/14/upgrading-the-arduino-uno-8u2-using-flip/
3)http://arduino.cc/forum/index.php/topic,111.0.html

Qualcuno puo' consigliarmi un metodo per porre il mio convertitore in DFU mode? In caso fosse troppo difficoltoso, e' possibile riprogrammarlo tramite ICSP utilizzando l'altra scheda Arduino Uno?
36  International / Hardware / Re: convertitore usb seriale non carica sketch on: November 30, 2012, 02:43:05 pm
Allora ragazzi, tutte le cose che avete detto finora le ho giá provate; riepilogo:
  • invertire collegamenti RX e TX
  • collegare direttamente il RESET senza il condensatore
  • utilizzare cavo usb piú corto (cortissimo), da 1,8 mt a 30 cm
  • provato a reistallare driver e cambiare pc (Ubuntu e XP)
  • monitorare la seriale tramite Terminal (simile a Putty). In questo caso non ottengo risposta dal convertitore, ma so che che i dati li riceve perché ogni volta che mando un carattere sulla seriale lampeggia il led RX; pero' non ottengo risposta TX. Cosa ben diversa se utilizzo la scheda Arduino UNO collegata al chip atmel sulla breadboard modalita' programmatore. In quest'ultimo caso ottengo RX e TX ed il carattere lo vedo chiaramente in risposta

Utilizzare l'ICSP ? E perché mai? Io l'ho comprata perché il prototipo che sto realizzando deve essere programmato tramite USB. Ve lo immaginate la casalinga a combattere con il cavo AVR/ICSP?   smiley-grin

A questo punto le soluzioni sono:
1) la rimando indietro, pago altre 6 euro di spedizione
2)Me la tengo e provo a reinstallare il firmware sull' 8U2 e ne ordino una nuova. altre 12,10+6 Euro
3)La frantumo e la metto nella ciotola di Fuffy trasformandolo in cane bionico

Che rottura di ball!!!! cmq grazie
37  International / Hardware / Re: convertitore usb seriale non carica sketch on: November 30, 2012, 11:32:54 am
Nessun altro suggerimento? Non mi dite che gia' avete finito le cartucce... smiley-lol
38  International / Hardware / Re: convertitore usb seriale non carica sketch on: November 30, 2012, 10:27:10 am
Per fare la foto e postarla qui ho dovuto fare i collegamenti in fretta e di fatti TX e 5V sono invertiti e me ne sono accorto appena dopo aver  postato la foto. Ma vi dico che i collegamenti sono giusti. Sono 2 giorni che ci sbatto la testa e li ho ricontrollati 300 volte...!
39  International / Hardware / Re: convertitore usb seriale non carica sketch on: November 30, 2012, 10:16:53 am
Ragazzi, come ho gia' detto, gia' li avevo invertiti RX e TX ma senza risultato. Ovvio che il chip Atmega e' con bootloader altrimenti non avrei potuto programmarlo con Arduino UNO ... smiley-wink

Si, io parlavo del chip 8U2 del convertitore usb/seriale esterno che ho acquistato. E' possibile che in qualche modo sia difettoso? Mi sembra strano ma devo chiederlo per forza.

In ogni caso sono alla frutta, mi sa che me ne devo comprare un altro va! porca putt....
Se avete altri suggerimenti postate,postate,postate!  smiley
40  International / Hardware / Re: convertitore usb seriale non carica sketch on: November 30, 2012, 09:40:36 am
Avevo gia'provato ad invertire RX e TX ma senza risultato... smiley-sad!! Altri suggerimenti sono graditi.
PS. potrebbe essere che si e' sputtanato il bootloader/firmware del 8U2 e necessita una reinstallazione ?
41  International / Hardware / convertitore usb seriale non carica sketch on: November 30, 2012, 08:24:36 am
Ciao a tutti. Ho da poco acquistato un convertitore usb/seriale (http://www.robot-italy.com/it/usb-to-serial-converter.html) per caricare gli sketch su un arduino standalone. Ho realizzato il semplice circuito su breadboard come da allegato(spero si vedano bene i collegamenti).
Fondamentalmente lo schema e' questo:
  • convertitore GND => atmega328 GND
  • convertitore +5V => atmega328 +5V
  • convertitore RX => atmega328 pin2(RX)
  • convertitore TX => atmega328 pin3(TX)
  • convertitore RST => atmega328 pin1 RST (utilizzo un condensatore da 100nF ed una resistenza pull-up di 10k)
Il problema e' che quando cerco di caricare lo sketch ottengo solamente alcuni brevi lampeggi del led RX e poi piu' nulla ed il codice di errore e' notInSync resp0x00. Sono sicuro che tutti gli altri collegamenti sono giusti, perche' se collego la mia scheda Arduino UNO come programmatore,utilizzando gli stessi:GND,RST,RX,TX,+5V, tutto funziona alla perfezione. Ho provato a reinstallare il driver, cambiare porta (utilizzo Vista) ed ho provato su altri computer con Lubuntu 12.04 ed XP ma senza nessun cambiamento.
In ultima analisi, ho provveduto a monitorare i dati effettivamente scambiati con il pc attraverso un serial monitor ed infatti i dati inviati sulla seriale dal pc dovrebbero arrivare al convertitore perche' lampeggia il led RX, ma poi non ottengo nulla in risposta. La stessa prova effettuata con la scheda Arduino Uno, come programmatore, riesce ad inviare ed a ricevere.

Puo' essere che il cavo usb sia troppo lungo (1,8mt)?
Credo di essere arrivato ad un punto morto e non so piu' che pesci pigliare, mi date una mano per favore?
42  International / Software / problemi di conversione con char on: November 06, 2012, 09:01:57 pm
ciao. Ho questo tipo di codice :

Code:
char *swap[100];
prog_char impostazioni1[] PROGMEM="Camera";
prog_char impostazioni2[] PROGMEM="Axis";
prog_char impostazioni3[] PROGMEM="Display";
prog_char impostazioni4[] PROGMEM="Back";

PROGMEM char *impostazionix[]={
  impostazioni1,impostazioni2,impostazioni3,impostazioni4
};


In un determinato punto del mio codice chiamo la funzione fillSwapArray(impostazionix)

Code:
void fillSwapArray(char *arr[]){
  for(int i=0;i<3;i++){
  strcpy_P(swap,(char*)pgm_read_word(&(arr[i]))); <==errore 
  }
 
}

Ora ottengo un errore di conversione da char** a char*.
In poche parole devo ripescare gli elementi dell'array depositato in memoria flash con progmem e riversarli nell'array swap[] . Come posso fare? Grazie
43  International / Software / Re: ST7565 aggiungere custom fonts on: November 06, 2012, 07:28:28 am
Benissimo. diciamo che voglio, per ora, solamente inserire un set di caratteri numerici da 0 a 9 piú grandi dei precedenti.
1) da immagini bitmap di dimensione 20x34 li converto in hex e li scrivo in un altro array denominato numBig
2) alla funzione drawchar inserisco il parametro font e le dimensioni del carattere drawchar(uint8_t x,uint8_t line, char c,uint8_t W, uint8_t H, char font)
3) la funzione drawchar verrá quindi modificata ma non so da dove partire. Potreste farmi un esempio?

Grazie ancora
44  International / Software / ST7565 aggiungere custom fonts on: November 05, 2012, 02:08:31 pm
ciao! Ho acquistato un display grafico 128x64 ed ora ho la necessitá di modificare tipo e grandezza dei font. Sulla libreria Adafruit (https://github.com/adafruit/ST7565-LCD) vi sono due funzioni principali per l'output del testo:

 
Code:
void ST7565::drawstring(uint8_t x, uint8_t line, char *c) {
  while (c[0] != 0) {
    drawchar(x, line, c[0]);
    c++;
    x += 6; // 6 pixels wide
    if (x + 6 >= LCDWIDTH) {
      x = 0;    // ran out of this line
      line++;
    }
    if (line >= (LCDHEIGHT/8))
      return;        // ran out of space :(
  }
}

void  ST7565::drawchar(uint8_t x, uint8_t line, char c) {
  for (uint8_t i =0; i<5; i++ ) {
    st7565_buffer[x + (line*128) ] = pgm_read_byte(font+(c*5)+i);
    x++;
  }

  updateBoundingBox(x, line*8, x+5, line*8 + 8);
}

L'unico font disponibile é strutturato in questa maniera (lo riporto parzialmente dato che é lungo):

Code:
uint8_t font[] PROGMEM = {
  0x0, 0x0, 0x0, 0x0, 0x0,       // Ascii 0
  0x7C, 0xDA, 0xF2, 0xDA, 0x7C,  //ASC(01)
  0x7C, 0xD6, 0xF2, 0xD6, 0x7C,  //ASC(02)
  0x38, 0x7C, 0x3E, 0x7C, 0x38,
  0x18, 0x3C, 0x7E, 0x3C, 0x18,
  0x38, 0xEA, 0xBE, 0xEA, 0x38, };

Per ora ho provato a utilizzare vari programmi di conversione da font a hex, da bmp a hex ecc. , ho provato a modificare la funzione drawchar, ma senza alcun successo.
Ora ho la necessitá che mi spieghiate in detaglio, dato che in C++ sono un po' niubbo, cosa fanno esattamente le due funzioni e come modificarle per ottenere delle funzioni universali in cui poter inserire il tipo di font e la rispettiva dimensione.

Grazie!
45  International / Hardware / Come collegare Encoder Rotativo ad Arduino (7 pins) on: October 28, 2012, 10:19:58 am
Ciao a tutti! Ho acquistato questo encoder (https://www.sparkfun.com/products/10596?) e sto seguendo questa guida (http://www.circuitsathome.com/mcu/reading-rotary-encoder-on-arduino), ma il mio possiede 7 pins, mentre quello della guida solo 5! Ho provato a dare uno sguardo al datasheet fornito da sparckfun ma, come potete vedere, non si capisce una mazza.. smiley-mad! Potreste dirmi come collegare questo encoder ad Arduino e quali sono le funzioni dei vari pin? Avrei bisogno anche di gestire il click del pulsante, ma non conosco quali sono i pin deputati al pulsante e quali al led!
Pages: 1 2 [3] 4