Go Down

Topic: Aiuto progetto, bilancia wireless (Read 713 times) previous topic - next topic

Patrick_M

#15
Jul 15, 2018, 11:19 pm Last Edit: Jul 15, 2018, 11:19 pm by Patrick_M
i pin sono collegati tra loro ... il protocollo SPI serve per dialogare con più oggetti collegati sulla stessa linea, quello che decide chi è di volta in volta il destinatario è il pin CS che sarà univoco per ogni oggetto
per inserire (lo sketch) il programma, dall'IDE clicca modifica, clicca copia per il forum poi vieni qui e incolla nel tuo post (ctrl+v) ;)

gpb01

#16
Jul 16, 2018, 06:34 am Last Edit: Jul 16, 2018, 06:58 am by gpb01
>Valerio900: Il bus SPI, sul ATmega328P, è UNO solo, collegato sia al connettore ICSP che ai pin 11, 12 e 13 quindi, DEVI usare un pin di "select" differente per ogni device che colleghi ed in comune i pin 11, 12 e 13 (indipendenemente da dove ti vai a collegare, tanto sono gli stessi).

Tutorial sul bus SPI.

Guglielmo
Search is Your friend ... or I am Your enemy !

Valerio900

Help! Non capisco perchè anche gestendo il CS non riesco a "spegnere" l'SD. Vi copio il codice. In teoria portando alto il PIN 10 che fa da CS dovrei ricevere il messaggio "Card failed, or not present", invece l'SD viene inizializzata.Non capisco perchè, visto che il modulo SD dovrebbe funzionare con il CS a livello basso. L'idea mia visto che devo collegare due dispositivi con SPI era quella di scrivere un codice simile :

void loop{
digitalWrite(CS_SD,LOW);
digitalWrite(CS_TRX,HIGH);
//scrivi su SD...
digitalWrite(CS_SD,HIGH);
digitalWrite(CS_TRX,LOW);
//trasmetti dati...

}

Avete qualche suggerimento? Cosa Sbaglio? I pin di default sono a liv logico basso?
Vorrei anche sapere se per fare una cosa del genere l'inizializzazione dell'SD deve essere fatta all'interno del loop prima di scrivere in memoria, oppure va fatta una sola volta nel void set up().

Code: [Select]


#include<SPI.h>
#include <SD.h>

void setup() {
  Serial.begin(9600);
 
  pinMode(10,OUTPUT);
  digitalWrite(10,HIGH);
 
    // SD card initializing
  Serial.print("Initializing SD card...");

  // see if the card is present and can be initialized:
  if (!SD.begin(10)) {
    Serial.println("Card failed, or not present");
    // don't do anything more:
    return;
  }
  Serial.println("card initialized.");

 }

void loop() {

 File dataFile = SD.open("datalog.txt", FILE_WRITE);

  // if the file is available, write to it:
  if (dataFile) {
    dataFile.print("ciao");
    dataFile.close();
      }
  // if the file isn't open, pop up an error:
  else {
    Serial.println("error opening datalog.txt");
  } 

  delay(1000);
}

Go Up