Tutorial 08: analogRead () și Serial Port Communications

analogRead () și Serial Port Communications

știind dacă ceva este pornit sau oprit poate fi extrem de util, dar de multe ori veți dori să aflați mai multe. Cât de strălucitoare este lumina?

cât de repede se mișcă satelitul? Aceste tipuri de răspunsuri sunt adesea analogice – acoperă o gamă largă de valori, nu doar activate sau dezactivate.

Arduino gestionează intrările analogice cu 6 pini dedicați, etichetați A0 până la A5. Acești pini au acces la un convertor analog-digital, care ia gama de valori de intrare și creează o versiune digitală prin tăierea intervalului în bucăți mici. Toate acestea sunt gestionate în culise – tot ce trebuie să faceți este să utilizați câteva funcții foarte simple și veți obține ceea ce aveți nevoie.

veți avea nevoie de

  1. potențiometru (orice interval de rezistență va funcționa)
  2. Jumper Fire – cel puțin 3
  3. anvelope pentru biciclete

instrucțiuni pas cu pas

  1. așezați potențiometrul în panoul tău.
  2. rulați un fir de legătură de la știftul de 5 Volți al Arduino la oricare dintre pinii exteriori ai potențiometrului.
  3. rulați un alt fir de legătură de la unul dintre pinii de împământare de pe Arduino (etichetat GND) la celălalt pin exterior al potențiometrului.
  4. rulați ultimul fir de legătură de la pinul a0 de pe Arduino până la pinul din mijloc al potențiometrului.
  5. conectați Arduino la computer.
  6. deschide IDE-ul Arduino.
  7. deschideți schița pentru această secțiune.
  8. Faceți clic pe butonul Verificare din partea stângă sus a ecranului. Se va transforma portocaliu și apoi înapoi la albastru odată ce a terminat.
  9. Faceți clic pe butonul Încărcare (lângă butonul Verificare). Se va transforma portocaliu și apoi înapoi la albastru odată ce a terminat.
  10. în bara de meniu, accesați Instrumente > monitor Serial – aceasta va deschide fereastra Monitor Serial – ar trebui să vedeți numerele rulând pe acest ecran.
  11. acum reglați butonul potențiometrului și urmăriți fereastra monitorului serial. Numerele ar trebui să se adapteze între 0 și 1023.

folosind Arduino analogread și map funcția cu un potențiometru la pinul A0

această imagine compusă cu Fritzing.

codul Arduino

/* AnalogReadSerial Reads an analog input on pin 0, prints the result to the serial monitor. Graphical representation is available using serial plotter (Tools > Serial Plotter menu) Attach the center pin of a potentiometer to pin A0, and the outside pins to +5V and ground. This example code is in the public domain.*/// the setup routine runs once when you press reset:void setup() { // initialize serial communication at 9600 bits per second: Serial.begin(9600);}// the loop routine runs over and over again forever:void loop() { // read the input on analog pin 0: int sensorValue = analogRead(A0); // print out the value you read: Serial.println(sensorValue); delay(1); // delay in between reads for stability}

discutați schița

această schiță începe cu un comentariu cu mai multe linii care descrie schița și circuitul. Probabil veți observa că primul bloc de cod este funcția setup () – nu declarăm sau inițializăm nicio variabilă la începutul acestei schițe – în schimb vom face acest lucru în interiorul funcției loop (), ca în ultimul exemplu. În interiorul acolade buclat de configurare () vom revizui Biblioteca Serial și de a folosi funcția Serial.începe ().

void setup() {// initialize serial communication at 9600 bits per second:Serial.begin(9600);}

dacă vă amintiți din ultima lecție, Serial.begin () ia rata baud ca argument (aceasta va fi aproape întotdeauna 9600). Această funcție vă permite să configurați un canal de comunicare între computer și Arduino. După cum probabil știți până acum, setup() rulează o singură dată și apoi trecem la următorul bloc de cod.

dar așteptați! Nu trebuie să setăm modul pinului pe care îl vom folosi? Mare punct!

ceea ce face Arduino, în mod implicit, este setat toate pinii de pe bord ca intrări dacă nu vă spun altfel. Deci, în multe cazuri, nu trebuie să setați în mod explicit un pin ca intrare utilizând funcția pinMode (). Acestea fiind spuse – îmi fac un obicei să fac asta oricum – pentru că îmi clarifică lucrurile-și asta merită în spațiu și efort.

așa că vă îndrăznesc, setați modul pinului folosind funcția pinMode (A0, INPUT) în interiorul bretelelor buclate ale setup ()– nu veți regreta.

trecând la funcția loop (), începem cu o declarație variabilă și inițializare.

int sensorValue = analogRead(A0);

declarăm o variabilă numită sensorValue și o inițializăm la ieșirea unei noi funcții. Această nouă funcție este analogRead plin de farmec(). Deci, să ia o presupunere sălbatică ce face această nouă funcție analogRead (). Citește valoarea la pinul analogic pe care l – ați ales-în acest caz, este pinul analogic A0, unde avem pinul central al potențiometrului conectat. Tensiunea la pinul A0 va fi mapată la un număr între 0 și 1023, iar această valoare va fi atribuită variabilei sensorValue.

dacă vă amintiți de sus, tensiunea reală la pinul a0 va fi între 0 și 5 volți, în funcție de locul în care este reglat potențiometrul dvs. – această valoare este mapată la intervalul 0 – 1023 cu ajutorul convertorului analog-digital. Deci avem o variabilă care a înregistrat valoarea la potențiometrul nostru-ce urmează? Ei bine, să ne uităm la valoare. Pentru a face acest lucru, trebuie să-l imprimăm de pe Arduino pe computerul nostru – și ați ghicit-o, vom folosi funcția de bibliotecă serială println () pentru a face exact asta…

Serial.println(sensorValue);

nu există surprize mari aici – trimitem ca argument variabila sensorValue la funcția Serial.println () și fereastra noastră monitor serial va afișa valorile rezultate.

pentru a termina schița, invocăm funcția delay() pentru o milisecundă pentru a ne asigura că următoarea noastră citire este una stabilă și începem din partea de sus a buclei() din nou. Înregistrăm o nouă valoare folosind analogRead (), o salvăm în variabila sensorValue și apoi o imprimăm pe computer.

toate acestea sunt bune și bine, s-ar putea să vă gândiți, dar ce legătură are un potențiometru cu senzorii? Un potențiometru nu simte nimic! Aveți dreptate – dar interesant este că mulți senzori funcționează aplicând același principiu pe care îl face un potențiometru – reglarea rezistenței. Luați un rezistor foto, de exemplu – poate fi folosit pentru a simți lumina – deoarece rezistența se schimbă pe baza luminozității luminii la care este expusă – această modificare a rezistenței va regla cantitatea de tensiune pe care o va primi un știft de la capătul receptor. Deci, acum mingea este în curtea ta-pentru ce poți folosi analogRead ()?

încercați pe cont propriu

  • schimbați pinul analogic la A2. Efectuați ajustări în cod și circuit.
  • încercați un potențiometru diferit în circuit, afectează intervalul de valori afișat?

lecturi suplimentare

  • analogRead ()
  • pini de intrare analogice
  • potențiometru tutorial – acest lucru este bun

Lasă un răspuns

Adresa ta de email nu va fi publicată.