Show Posts
Pages: 1 2 [3] 4
31  Forum 2005-2010 (read only) / Italiano / Re: Arduino ed EEPROM 24LC16B on: November 10, 2010, 04:25:42 am
Con il seguente sketch trovato in rete, sono riuscito a scrivere, sulla eeprom, la stringa "1234567890123456" sedici byte.

Se cerco di scrivere oltre i sedici byte mi restituisce il valore 255.

Qualcuno può aiutarmi?

Grazie totodix

#include <Wire.h> // specify use of Wire.h library.

byte sw0 = 12; // digital pin for switch connected to ground.

// address in 24LC08. values from 000 hex to 3FF hex

int position_pointer = 0x3f0;

void setup()
{
  pinMode(sw0, INPUT);
  digitalWrite(sw0, HIGH); // turn on internal pull up
  Wire.begin(); // join i2c bus (address optional for master)
  Serial.begin(9600);  // setup serial for output
  // send test message "1234567890123456"
  Wire.beginTransmission(0x50); // connect to 24LC08 device address
  Wire.send(position_pointer); // beginning address within EEPROM
  Wire.send("1234567890123456");
  Wire.endTransmission();

}

void loop()
{
  while (digitalRead(sw0) == 1) {
  } // wait here until switch is pushed.
  Wire.beginTransmission(0x50); // link to 24LC08
  Wire.send(position_pointer); // must act as a position pointer
  Wire.endTransmission();
  Wire.requestFrom(0x50, 7); // request 7 bytes from slave device 24LC08

  // below will loop until 7 bytes are received.

  while(Wire.available()) // slave may send less than requested
  {
    byte c = Wire.receive(); // receive a byte as character
    Serial.print(c); // print the character
  }
  Serial.print("\n"); // next line
  delay(1000); // wait one second.
}
32  Forum 2005-2010 (read only) / Italiano / Re: Arduino ed EEPROM 24LC16B on: November 08, 2010, 02:22:13 pm
Eccovi il codice:
/*
  *  Use the I2C bus with EEPROM 24LC64
  *  Sketch:    eeprom.pde
  *  
  *  Author: hkhijhe
  *  Date: 01/10/2010
  *
  *  
  */

  #include <Wire.h> //I2C library



  void i2c_eeprom_write_byte( int deviceaddress, unsigned int eeaddress, byte data ) {
    int rdata = data;
    Wire.beginTransmission(deviceaddress);
    Wire.send((int)(eeaddress >> smiley-cool); // MSB
    Wire.send((int)(eeaddress & 0xFF)); // LSB
    Wire.send(rdata);
    Wire.endTransmission();
  }

  // WARNING: address is a page address, 6-bit end will wrap around
  // also, data can be maximum of about 30 bytes, because the Wire library has a buffer of 32 bytes
  void i2c_eeprom_write_page( int deviceaddress, unsigned int eeaddresspage, byte* data, byte length ) {
    Wire.beginTransmission(deviceaddress);
    Wire.send((int)(eeaddresspage >> smiley-cool); // MSB
    Wire.send((int)(eeaddresspage & 0xFF)); // LSB
    byte c;
    for ( c = 0; c < length; c++)
      Wire.send(data[c]);
    Wire.endTransmission();
  }

  byte i2c_eeprom_read_byte( int deviceaddress, unsigned int eeaddress ) {
    byte rdata = 0xFF;
    Wire.beginTransmission(deviceaddress);
    Wire.send((int)(eeaddress >> smiley-cool); // MSB
    Wire.send((int)(eeaddress & 0xFF)); // LSB
    Wire.endTransmission();
    Wire.requestFrom(deviceaddress,1);
    if (Wire.available()) rdata = Wire.receive();
    return rdata;
  }

  // maybe let's not read more than 30 or 32 bytes at a time!
  void i2c_eeprom_read_buffer( int deviceaddress, unsigned int eeaddress, byte *buffer, int length ) {
    Wire.beginTransmission(deviceaddress);
    Wire.send((int)(eeaddress >> smiley-cool); // MSB
    Wire.send((int)(eeaddress & 0xFF)); // LSB
    Wire.endTransmission();
    Wire.requestFrom(deviceaddress,length);
    int c = 0;
    for ( c = 0; c < length; c++ )
      if (Wire.available()) buffer[c] = Wire.receive();
  }




  void setup()
  {
    char somedata[] = "this is data from the eeprom"; // data to write
    Wire.begin(); // initialise the connection
    Serial.begin(9600);
    i2c_eeprom_write_page(0x50, 0, (byte *)somedata, sizeof(somedata)); // write to EEPROM

    delay(10); //add a small delay

    Serial.println("Memory written");
  }

  void loop()
  {
    int addr=0; //first address
    byte b = i2c_eeprom_read_byte(0x50, 0); // access the first address from the memory

    while (b!=0)
    {
      Serial.print((char)b); //print content to serial port
      addr++; //increase address
      b = i2c_eeprom_read_byte(0x50, addr); //access an address from the memory
    }
    Serial.println(" ");
    delay(2000);

  }


liberamente espirato da

http://www.arduino.cc/playground/Code/I2CEEPROM

Mi restituisce "Memory written" ma quando va a leggere mi si pianta sul valore 255.

Saluti Totodix
33  Forum 2005-2010 (read only) / Italiano / Re: Arduino ed EEPROM 24LC16B on: November 08, 2010, 11:42:34 am
Ciao e benrisentito,

ho messo Ao,A1 e A2 a massa indirizzo 0X50 xò leggo sempre il valore 255, il discorso così è sterile, appena posso posto il codice.

Saluti Totodix.
34  Forum 2005-2010 (read only) / Italiano / Arduino ed EEPROM 24LC16B on: November 07, 2010, 12:30:01 pm
Buonasera  a tutti,

ho acquistato la EEPROM descritta nell'ogetto ed ho letto qualosa sulla libreria wire ma non ci ho capito un granchè.

Fin'ora ho fatto due brevi calcoli ovvero 16Kbit= 16384 bit ovvero 2048 byte quindi posso scrivere sulla EEPROM 2048 caratteri giusto?

Siccome ho paura di fare danno, qualcuno potrebbe guidarmi passo passo per l'utilizzo della EEPROM?

Attualmente ho messo a massa i piedini 1,2,3 e 4 - il 7 e 8 a +VCC il 5 (sda) sull'ingresso analogico nr.4 e il 6 (SCL) sull'ingresso analogico nr.5.

Per il resto.... lettura/scrittura e gestione overflow aspetto qualcuno di voi che può darmi una mano.

Saluti Totodix.
35  Forum 2005-2010 (read only) / Italiano / Re: DUBBI - Lettura valore analogico on: November 02, 2010, 12:52:42 pm
Scusa, e ben "risentito"

parlo di input sul canale analogico.

Credevo che senza carico "in aria" restituissero il valore 0 (zero).

Grazie Totodix
36  Forum 2005-2010 (read only) / Italiano / DUBBI - Lettura valore analogico on: November 02, 2010, 12:17:58 pm
Buonasera a tutti,

sto iniziando a "giocare" con Arduino come primo progetto ho seguito un topic presente su questo forum ovvero, un misuratore di distanza utilizzando due diodi IR.

Durante la lettura del valore sull'ingresso analogico 0 senza carico (cioè vuoto) leggendo la seriale mi parte da un numero X (che ora non ricordo) ed inizia a decrescere. E' normale? Senza carico sull'uscita non dovrebbe leggere un valore pari allo 0 (zero)?

Grazie Totodix.
37  Forum 2005-2010 (read only) / Italiano / Re: Tasto reset on: October 21, 2010, 02:49:35 am
Grazie per le risposte,

scusate se sono zuccone quindi posso collegare l'usb per scaricare lo sketch insieme all'alimentazione per la scheda arduino e non brucio nulla, giusto?

Saluti Totodix
38  Forum 2005-2010 (read only) / Italiano / Tasto reset on: October 20, 2010, 12:30:50 pm
Buonasera a tutti,

sento che sto per chiedere qualcosa di veramente stupido ma l'arduino mi è arrivato solo ieri e qundi ho fatto solo alcune prove.

Volevo sapere la funzione precisa del tasto "Reset" nel senso che:
1. resetta l'ATMEGA facendo ripartire lo sketch da capo.
2. resetta l'ATMEGA cancellando lo sketch caricato.

Questa domanda mi è sorta perchè per caricare un sketch nuovo faccio l'upload su quello vecchio è giusta come procedura?

Ultima domanda, quando si alimenta arduino da una fonte esterna, per caricare un nuovo sketch, devo staccare la fonte ed utilizzare la porta USB oppure possono essere attaccate contemporaneamente?

Scusate per le domande banali, ma sono agli inizi.

Grazie Totodix
39  Forum 2005-2010 (read only) / Italiano / Re: Proposta acquisto di gruppo on: September 16, 2010, 05:06:25 pm
Parlo per me..... nessuno ha accolto la mia proposta.
40  Forum 2005-2010 (read only) / Italiano / Re: Proposta acquisto di gruppo on: September 16, 2010, 08:58:37 am
Da 20 ai 30 pezzi se il prezzo è interessante

Saluti totodix
41  Forum 2005-2010 (read only) / Italiano / Re: Proposta acquisto di gruppo on: September 13, 2010, 12:08:14 pm
Buonasera a tutti,

della ATMEL ho reperito il seguente recapito

ATMEL      Via Grosio 10/8      Italy      Tel: (39) 023-8037-1
      20151 Milano            Fax: (39) 023-8037-234

non li ho chiamati xkè non penso che vendano a privati, vorranno qualche ditta per evadere l'ordine.

Comunque provare non costa.

Saluti Totodix
42  Forum 2005-2010 (read only) / Italiano / Re: Proposta acquisto di gruppo on: September 11, 2010, 05:25:17 am
Ho trovato un sito che da 4 euro li vende a 3 euro per l'acquisto di un nr. > di 20 pezzi.

Spese spedizione 11,50 euro prezzo fisso da uno a x (ics) pezzi poichè il peso di ogni singolo pezzo è irrisorio.

Non è male!!!
43  Forum 2005-2010 (read only) / Italiano / Re: Proposta acquisto di gruppo on: September 11, 2010, 03:22:14 am
Non è detto alcuni siti vendono con bootloader precaricato, poi se non c'è lo caricheremo seguendo qualche guida di questo sito.

Pre le spedizioni ci avevo già pensato, se acquistiamo con un gruppo di persone + o - vicine le consegne si possono fare a mano. Ad esempio due volte al mese faccio la A14 Termoli/Ancona durante il tragitto posso effettuare le consegne o cedere il pacco a qualcuno che preosegue fino a Bologna o arriva fino a Foggia, a Pescara c'è la diramazione con la A25 e A24 Roma/Pescara.

Le possibilità ci sono, ci vuole fiducia e buona volontà.

Saluti Totodix

N.B. Naturalmente per nomi, cognomi e recapiti vari ci sientiamo in pm.
44  Forum 2005-2010 (read only) / Italiano / Proposta acquisto di gruppo on: September 10, 2010, 10:11:03 am
Su questo forum si legge spesso di utenti che si lamentano dei prezzi alti dei controllori 168 e 328 ebbene ho una proposta......
presso alcuni siti acquistando un congruo numero di componenti si risparmia sul loro costo e dividendo le spese di spedizione ci risparmiano ancora di più.

Chi è interessato?

Fatemi sapere Totodix.
45  Forum 2005-2010 (read only) / Italiano / Arduino e LCD Nokia on: September 10, 2010, 10:01:52 am
Buonasera a tutti, e grazie per il prezioso aiuto.

Ho rimediato due LCD del Nokia 6600 li posso utilizzare con Arduino?

Grazie Totodix.
Pages: 1 2 [3] 4