Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Due programmi su arduino

Raccolta di codici sorgenti

Moderatore: Foto UtentePaolino

0
voti

[1] Due programmi su arduino

Messaggioda Foto Utenteedproduction » 24 nov 2013, 1:25

Ciao a tutti, sto usando arduino per acquisire dei valori analogici di 4 sonde temperatura per inviarli al mio Software domotica e fino qua tutto ok. Li ricevo tramite sieriale e poi li gestisco tramite il mio programma.
poi ho preso uno sketch che controlla un tastierinio numerico 4x3 e sempre attraverso la seriale, invio i comandi.
PROBLEMA
Non riesco a mettere tutti e due i codici insieme.
Nel primo caso, i valori vengono inviati ogni secondi
nel secondo caso, i valori vengono inviati ogni volta che viene immesso un carattere.
Vi prego, sto studiano questo linguaggio, ma per adesso ho fatto solo confusione.
Potete aiutarmi voi?
vi posto i due programmi, ma sono indipendenti, mi serve solo un' unico sketch che gestisce questi due valori.
Ogni secondo viene inviato il valore di tutte le sonde collegate dai pin 0,1,2,3
e se premo i tasti del tastierino numerico, devo inviare anche quelli, ma senza fare confusione.
Vi ringrazio comunque

CODICE PER TASTIERINO NUMERICO



Codice: Seleziona tutto
#include <Keypad.h>

const byte ROWS = 4; //four rows
const byte COLS = 3; //three columns
char keys[ROWS][COLS] = {
  {'1','2','3'},
  {'4','5','6'},
  {'7','8','9'},
  {'#','0','*'}
};
byte rowPins[ROWS] = {5, 4, 3, 2}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {8, 7, 6}; //connect to the column pinouts of the keypad

Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

void setup(){
  Serial.begin(9600);
}
 
void loop(){
  char key = keypad.getKey();
 
  if (key != NO_KEY){
  Serial.print("KP");
    Serial.println(key);
  }
}


CODICE PER SENSORI TEMPERATURA

Codice: Seleziona tutto
float temp1;
float temp2;
float temp3;
float temp4;

int tempPin1 = 0;
int tempPin2 = 1;
int tempPin3 = 2;
int tempPin4 = 3;

void setup()
{
  Serial.begin(9600);
}

void loop()
{
  temp1 = analogRead(tempPin1);
  temp2 = analogRead(tempPin2);
  temp3 = analogRead(tempPin3);
  temp4 = analogRead(tempPin4);

  temp1 = temp1 * 0.48828125;
  temp2 = temp2 * 0.48828125;
  temp3 = temp3 * 0.48828125;
  temp4 = temp4 * 0.48828125;

  Serial.print("T");
  Serial.print("_");
  Serial.print(temp1);
  Serial.print("_");
  Serial.print(temp2);
  Serial.print("_");
  Serial.print(temp3);
  Serial.print("_");
  Serial.print(temp4);
  Serial.println("_");



  delay(1000);

}
Avatar utente
Foto Utenteedproduction
11 4
New entry
New entry
 
Messaggi: 54
Iscritto il: 15 set 2012, 21:39

0
voti

[2] Re: Due programmi su arduino

Messaggioda Foto Utentegrandegiove » 26 nov 2013, 19:28

Ciò che devi puntare ad eliminare per unire i due programmi è:

Codice: Seleziona tutto
delay(1000);


in quanto in questo modo lì si conferma l'esecuzione del programma.

Per fare questo è fondamentale capire come ottenere una base dei tempi indipendente dal ciclo: un bel timer?
Avatar utente
Foto Utentegrandegiove
1.151 1 4 8
Expert
Expert
 
Messaggi: 517
Iscritto il: 18 ott 2010, 9:59

0
voti

[3] Re: Due programmi su arduino

Messaggioda Foto UtenteZG84 » 3 gen 2014, 12:48

in quanto in questo modo lì si conferma l'esecuzione del programma.

il delay non fa altro che bloccare il microcontrollore per 1 secondo non centra.

Per fare questo è fondamentale capire come ottenere una base dei tempi indipendente dal ciclo: un bel timer?


Devi imparare a gestire la funzione millis() o micros() dipende da quello che devi fare.
Con delay blocchi il microcontrollore con millis e micros no in quanto utilizzi il timer interno al controllore.

1-Non avresti più soddisfazione a farti tu il programma per il keypad? anziché usare una libreria?
2-Se segui il punto uno non hai il problema dell'integrazione dei due programmi e perdendo 10 minuti hai più soddisfazione e meno casini
3-Non ho la più pallida idea di come funziona quella libreria e di conseguenza mi riesce difficile aiutarti ma di sicuro sul forum ufficiale trovi gente che mastica librerie e Arduino dalla mattina alla sera e sicuramente molto più capace di me
O_/
...e come diceva sempre mio nonno: "Nessuno nasce imparato"
Avatar utente
Foto UtenteZG84
1.710 3 8 12
Expert EY
Expert EY
 
Messaggi: 908
Iscritto il: 11 nov 2013, 17:06

0
voti

[4] Re: Due programmi su arduino

Messaggioda Foto Utentedaniele1996 » 9 gen 2014, 19:34

per fare quello che hai scritto li ti serve uno schedulatore, che versione di arduino hai? UNO? Duemilanove?
Avatar utente
Foto Utentedaniele1996
608 2 8 11
Sostenitore
Sostenitore
 
Messaggi: 1439
Iscritto il: 29 ago 2011, 11:29


Torna a Firmware e programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite