Tutorial 08: analogRead() and Serial poorts Communications

analogRead() and Serial poorts Communications

weten of iets aan of UIT staat kan zeer nuttig zijn, maar vaak wilt u meer weten. Hoe fel is het licht?

hoe snel beweegt de satelliet? Dit soort antwoorden zijn vaak analoog – ze bestrijken een groot scala aan waarden, niet alleen aan of uit.

de Arduino verwerkt analoge ingangen met 6 speciale pinnen, gelabeld A0 tot A5. Deze pinnen hebben toegang tot een analoog-naar-digitaal converter, die het bereik van de ingangswaarden neemt en een digitale versie creëert door het bereik in kleine stukjes te snijden. Dit alles wordt achter de schermen afgehandeld – alles wat je hoeft te doen is een aantal zeer eenvoudige functies gebruiken en je krijgt wat je nodig hebt.

u hebt

  1. Potentiometer nodig (elk weerstandbereik werkt)
  2. jumperdraden-ten minste 3
  3. fietsband

stap-voor-stap instructies

  1. plaats de potentiometer in uw breadboard.
  2. draai een jumper draad van de 5-Volt pin van de Arduino naar een van de buitenste pinnen van uw potentiometer.
  3. voer een andere verbindingsdraad uit van een van de grondpennen op uw Arduino (gelabeld GND) naar de andere buitenste pin van de potentiometer.
  4. start de laatste verbindingsdraad van pin A0 op uw Arduino naar de middelste pin van de potentiometer.
  5. sluit de Arduino aan op uw computer.
  6. Open de Arduino IDE.
  7. Open de schets voor deze sectie.
  8. klik op de knop Verifiëren aan de linkerkant van het scherm. Het wordt oranje en dan weer blauw als het klaar is.
  9. klik op de knop Uploaden (naast de knop Verifiëren). Het wordt oranje en dan weer blauw als het klaar is.
  10. in de menubalk, ga naar Hulpmiddelen > seriële Monitor-dit opent het seriële Monitor venster – u zou de nummers van dit scherm moeten zien rollen.
  11. pas nu de knop van de potentiometer aan en bekijk het seriële monitorvenster. De getallen moeten tussen 0 en 1023 worden aangepast.

gebruikmakend van de Arduino-analoog-en kaartfunctie met een potentiometer op pin A0

deze afbeelding is samengesteld met Fritzing.

de Arduino-Code

/* 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}

bespreek de schets

deze schets begint met een meerregelige opmerking die de schets en het circuit beschrijft. U zult waarschijnlijk merken dat het eerste blok code de setup() functie is – we declareren of initialiseren geen variabelen aan het begin van deze schets – in plaats daarvan zullen we dit doen binnen de loop() functie, zoals in het laatste voorbeeld. In de accolades van setup() bezoeken we de seriële bibliotheek en gebruiken we de seriële functie.beginnen().

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

als u zich herinnert van de laatste les, Serial.begin () neemt de baudrate als argument (dit zal bijna altijd 9600 zijn). Met deze functie kunt u een communicatiekanaal instellen tussen de computer en de Arduino. Zoals je misschien wel Weet, draait setup() maar één keer, en dan gaan we door naar het volgende blok code.

maar wacht! Moeten we niet de modus van de pin die we gaan gebruiken instellen? Goed punt!

wat de Arduino standaard doet, is alle pinnen op het bord als ingangen instellen, tenzij je het anders vertelt. In veel gevallen hoef je dus niet expliciet een pin als invoer in te stellen met behulp van de functie pinMode (). Dat gezegd zijnde-ik maak er een gewoonte van om dit toch te doen – omdat het mij duidelijk maakt – en dat is het waard in ruimte en inspanning.

dus ik daag je uit, Stel de modus van de pin in met de pinMode(A0, INPUT) functie in de accolades van setup()– je zult er geen spijt van krijgen.

we gaan verder met de loop () functie, we beginnen met een variabele declaratie en initialisatie.

int sensorValue = analogRead(A0);

we declareren een variabele genaamd sensorValue en we initialiseren deze naar de uitvoer van een nieuwe functie. Deze nieuwe functie is de glamoureuze analogRead (). Dus neem een wilde Raad wat deze nieuwe functie analogRead() doet. Het leest de waarde op de analoge pin die u hebt gekozen-in dit geval is het de analoge pin A0, waar we de middelste pin van de potentiometer hebben aangesloten. De spanning bij pin A0 wordt toegewezen aan een getal tussen 0 en 1023, en deze waarde wordt toegewezen aan de variabele sensorwaarde.

als u zich van bovenaf herinnert, zal de werkelijke spanning bij pin A0 tussen 0 en 5 volt liggen, afhankelijk van waar uw potentiometer is ingesteld – deze waarde wordt met behulp van de analoog – naar-digitaal converter in kaart gebracht op het bereik 0-1023. Dus we hebben een variabele die de waarde heeft geregistreerd op onze potentiometer – wat nu? Laten we eens kijken naar de waarde. Om dat te doen, moeten wij het van Arduino aan onze computer drukken – en u raadt het al, zullen wij de periodieke bibliotheekfunctie println () gebruiken om enkel dat te doen…

Serial.println(sensorValue);

geen grote verrassingen hier – we sturen als argument de sensorValue variabele naar de functie seriële.println () en ons seriële monitorvenster zullen de resulterende waarden weergeven.

om de schets af te maken, roepen we de delay() functie één milliseconde aan om er zeker van te zijn dat onze volgende lezing stabiel is en we beginnen opnieuw aan de bovenkant van de lus (). We nemen een nieuwe waarde op met behulp van analogRead (), slaan deze op in de variabele sensorValue en printen deze vervolgens af naar de computer.

dit alles is goed en wel, zou je denken, maar wat heeft een potentiometer te maken met sensoren? Een potentiometer voelt niets! U hebt gelijk – maar interessant genoeg werken veel sensoren door hetzelfde principe toe te passen als een potentiometer – het aanpassen van de weerstand. Neem een foto-resister bijvoorbeeld – het kan worden gebruikt om licht te voelen – omdat de weerstand verandert op basis van de helderheid van het licht dat het wordt blootgesteld aan-deze verandering in de weerstand zal de hoeveelheid spanning die een pin op het ontvangende einde zal ontvangen aanpassen. Dus nu is de bal in uw veld – waar kunt u analogRead() voor gebruiken?

probeer het zelf

  • Verander de analoge pin naar A2. Maak aanpassingen in de code en het circuit.
  • probeer een andere potentiometer in het circuit, heeft dit invloed op het bereik van de weergegeven waarden?

verder lezen

  • analogRead()
  • analoge Invoerpinnen
  • potentiometer tutorial-Dit is goed

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.