Come collegare più schizzi.

Per unire più progetti in uno, devi affrontare tutti i possibili conflitti:

I progetti sono costruiti sulla stessa scheda/piattaforma?
  • Si - bene.
  • No - è necessario assicurarsi che la scheda "comune" possa funzionare con moduli presente nei progetti combinati e che abbia anche le periferiche necessarie.
Ci sono moduli collegati alle interfacce di comunicazione nei progetti?
  • No - bene.
  • Sì, I2C - se tutti i moduli sono collegati tramite I2C a una scheda comune, assicurati che gli indirizzi del dispositivo non corrispondano (molto raro).
  • Sì, SPI - il bus SPI ha tutti i pin "comuni", tranne CS (Chip Select), questo pin può essere qualsiasi pin digitale.
  • Sì, UART - il problema è che può collegare un solo dispositivo alla UART (ci sono eccezioni per esempio Arduino Mega). Puoi collegare un dispositivo su UART e il secondo su SoftwareSerial. O perdere tempo con multiplexer.
Ci sono pin utilizzati in entrambi i progetti?
  • No - bene.
  • Sì - scopri quale funzione svolge il pin in ciascuno dei progetti e scegli un sostituto, sia nel modulo che nel programma:
  • Se si tratta di un normale input/output digitale, è possibile sostituirlo con qualsiasi altro.
  • Se si tratta di una misurazione del segnale analogico, sostituirla con un altro pin analogico.
  • Se si tratta di una generazione PWM, collegarsi di conseguenza a un altro pin PWM e correggere il programma.
  • Se si tratta di un'interruzione - fai attenzione.
Vengono utilizzate le stesse periferiche del microcontrollore? 
Per fare ciò, è necessario studiare i moduli e le loro librerie:
  • No - bene.
  • Sì - la situazione richiede una buona esperienza con Arduino...
  • Viene utilizzato lo stesso timer: non è possibile utilizzare contemporaneamente PWM sui pin del primo timer e controllare i servi utilizzando la libreria Servo.h.
  • Viene utilizzata la generazione del suono utilizzando il tone(): PWM non può essere utilizzato sui pin del secondo timer.
  • Vengono utilizzati gli interrupt del timer e la generazione di PWM sul timer corrispondente è una situazione difficile.
  • E così via, le situazioni possono essere infinite...
È possibile apportare tutte le modifiche agli schemi e ai programmi dei progetti uniti in modo che non siano in conflitto. Successivamente, procediamo alla creazione del programma generale:
  • Includiamo tutte le librerie. Alcune librerie potrebbero entrare in conflitto, come Servo e Timer1 come discusso sopra.
  • Confrontiamo i nomi delle variabili globali e definiamo nei programmi uniti: non dovrebbero corrispondere. Le coincidenze vengono modificate sostituendo il codice con altri. Quindi, copia e incolla tutte le variabili globali e le definizioni in un programma comune.
  • Combinare il contenuto del blocco setup().
  • Abbiamo solo loop(), e questo è il compito più difficile.
Avevamo due (o più) progetti separati in esecuzione. Ora il nostro compito di programmatore è pensare e programmare il lavoro di questi diversi progetti in uno, e le situazioni sono già infinite:
  • Il codice principale (che è in loop()) da diversi progetti deve essere eseguito a turno su un timer.
  • Un insieme di azioni di diversi progetti dovrebbe essere cambiato con un pulsante o qualcos'altro.
  • Un sensore di un altro progetto viene aggiunto a un progetto: i dati devono essere elaborati e programmati per il loro ulteriore movimento (visualizzazione, invio, ecc.).
  • Tutti i "progetti" devono essere eseguiti contemporaneamente sullo stesso Arduino.
Nella maggior parte dei casi, non puoi semplicemente prendere e combinare i contenuti di loop() da diversi programmi.

Crea il tuo sito web gratis! Questo sito è stato creato con Webnode. Crea il tuo sito gratuito oggi stesso! Inizia