» Elektronica » Arduino »Arduino voor beginners

Arduino voor beginners


Arduino is een microcontroller board die je kunt programmeren om externe apparaten te bedienen. Het communiceert met de buitenwereld via sensoren, motoren, LED's, luidsprekers ... en zelfs internet, waardoor het een flexibel platform is voor verschillende projecten. Er zijn nogal wat microcontrollers, maar Arduino is populair vanwege het feit dat verschillende projecten zeer actief worden opgemaakt en besproken op internet. Als je op google of youtube zoekt, vind je miljoenen ideeën en informatie om Arduino zelf te gaan verkennen.
Zelfs als je geen ervaring hebt met het programmeren van microcontrollers - met Arduino zul je snel iets leren en leren over elektronica met behulp van experimenten.

Wat heb je nodig om te beginnen?
Arduino Uno- 1 st
USB-kabel - 1 stuks
Truien 1 st
1 stuks ontwikkelbord
Rode LED 4 stuks
220 ohm weerstand 4st
Weerstand 10 kamer 1 st
Knoop zonder bevestiging
Potentiometer
RGB-LED met gemeenschappelijke kathode

Dit alles kan worden gekocht bij een plaatselijke radiowinkel of besteld op internet.

Een online simulator werd gebruikt om elektrische circuits te demonstreren en te simuleren.

Deze simulator werkt het beste in de Chrome-browser.
Laten we de Arduino eens nader bekijken.

Arduino is geen grote computer waarop externe circuits kunnen worden aangesloten. Arduino Uno gebruikt Atmega 328P
Dit is de grootste chip op het bord. Deze chip voert programma's uit die in het geheugen zijn opgeslagen. Je kunt het programma via usb downloaden met de Arduino IDE. De usb-poort levert ook stroom aan de arduino.

Er is een aparte stroomconnector. Er zijn twee uitgangen op het bord, gelabeld 5v en 3.3v, die nodig zijn om verschillende apparaten van stroom te voorzien. U vindt ook pinnen gemarkeerd als GND, dit zijn aardingsdraden (aarde is 0V). Het Arduino-platform heeft ook 14 digitale uitgangen (pinnen), gemarkeerd met cijfers van 0 tot 13, die zijn verbonden met externe knooppunten en twee toestanden hebben, hoog of laag (aan of uit). Deze contacten kunnen werken als uitgangen of als ingangen, d.w.z. ze kunnen gegevens verzenden en externe apparaten bedienen, of gegevens van apparaten ontvangen. De volgende conclusies op het bord zijn aangeduid met A0-A5. Dit zijn analoge ingangen die gegevens van verschillende sensoren kunnen ontvangen. Dit is vooral handig wanneer u een bereik wilt meten, zoals temperatuur. De analoge ingangen hebben extra functies die afzonderlijk kunnen worden geactiveerd.


Hoe gebruik je een breadboard.

Een breadboard is nodig om de onderdelen tijdelijk met elkaar te verbinden, om te controleren hoe het apparaat werkt, voordat je alles aan elkaar soldeert.
Alle volgende voorbeelden worden verzameld op een breadboard, zodat u snel wijzigingen in het circuit kunt aanbrengen en onderdelen opnieuw kunt gebruiken zonder dat u zich zorgen hoeft te maken over solderen.

Het breadboard heeft rijen gaten waarin je onderdelen en draden kunt steken. Sommige van deze gaten zijn elektrisch met elkaar verbonden.

De twee bovenste en onderste rijen zijn in serie verbonden over het hele bord. Deze rijen worden gebruikt om het circuit van stroom te voorzien. Het kan 5v of 3.3v zijn, maar in ieder geval moet je eerst 5v en GND aansluiten op het breadboard, zoals weergegeven in de afbeelding. Soms kunnen deze rijverbindingen in het midden van het bord worden onderbroken, en als dat nodig is, kunt u ze verbinden, zoals weergegeven in de afbeelding.




De resterende gaten in het midden van het bord zijn gegroepeerd in vijf gaten. Ze worden gebruikt om circuitonderdelen aan te sluiten.

Het eerste dat we verbinden met onze microcontroller is de LED. Het elektrische aansluitschema wordt weergegeven in de afbeelding.


Waarom heb ik een weerstand in het circuit nodig? In dit geval beperkt het de stroom die door de LED gaat. Elke LED is ontworpen voor een specifieke stroom en als deze stroom groter is, zal de LED falen. Zoek uit welke waarde de weerstand moet hebben volgens de wet van Ohm. Voor degenen die het niet weten of zijn vergeten, zegt de wet van Ohm dat er een lineaire afhankelijkheid van stroom en spanning is. Dat wil zeggen, hoe meer we spanning op de weerstand zetten, hoe meer stroom er doorheen zal stromen.
V = I * R
Waar V-spanning over de weerstand
Ik- stroom door de weerstand
R- weerstand te vinden.
Eerst moeten we de spanning over de weerstand achterhalen. De meeste 3 mm of 5 mm LED's die u gaat gebruiken, hebben een bedrijfsspanning van 3 V. Dus op de weerstand moeten we 5-3 = 2v afbetalen.

Vervolgens berekenen we de stroom die door de weerstand gaat.
De meeste 3 en 5 mm LED's lichten op met volledige helderheid bij een stroom van 20mA. Meer dan dit kan een stroom uitschakelen, en een stroom van mindere sterkte zal hun helderheid verminderen zonder enige schade aan te richten.

Dus we willen de LED in het 5v-circuit inschakelen zodat deze een stroom van 20mA heeft. Omdat alle onderdelen in één circuit zijn opgenomen, heeft de weerstand ook een stroom van 20 mA.
We krijgen
2 V = 20 mA * R
2V = 0,02A * R
R = 100 ohm

100 Ohm is de minimale weerstand, het is beter om iets meer te gebruiken, omdat de LED's wat variatie in kenmerken vertonen.
In dit voorbeeld wordt een weerstand van 220 ohm gebruikt. Alleen omdat de auteur er veel heeft: wink :.

Steek de LED in de gaten in het midden van de kaart, zodat de lange aansluiting wordt aangesloten op een van de aansluitingen van de weerstand. Sluit het tweede uiteinde van de weerstand aan op 5V en sluit de tweede uitgang van de LED aan op GND. De LED moet oplichten.

Houd er rekening mee dat er een verschil is in hoe de LED moet worden aangesloten. De stroom vloeit van een langere terminal naar een kortere. In het diagram is het voorstelbaar dat de stroom in de richting van de driehoek stroomt. Probeer de LED om te draaien en u zult zien dat deze niet oplicht.

Maar hoe je de weerstand aansluit, er is helemaal geen verschil. Je kunt hem omdraaien of proberen hem aan te sluiten op de andere uitgang van de LED, dit heeft geen invloed op de werking van het circuit. Het beperkt nog steeds de stroom door de LED.

Anatomie van een Arduino Sketch.

Programma's voor Arduino worden sketch genoemd. Ze bestaan ​​uit twee hoofdfuncties. Functie opstelling en functie lus
binnen deze functie stelt u alle basisinstellingen in. Welke conclusies werken bij invoer of uitvoer, welke bibliotheken moeten worden aangesloten, initialiseert variabelen. Functie Configuratie () Het begint maar één keer tijdens de schets, wanneer het programma start.
dit is de belangrijkste functie die daarna wordt uitgevoerd opstelling (). In feite is dit het programma zelf. Deze functie blijft onbeperkt actief totdat u de stroom uitschakelt.

Arduino knipperende LED




In dit voorbeeld zullen we een circuit met een LED verbinden met een van de Arduino digitale pinnen en het in- en uitschakelen met behulp van het programma, en je leert ook verschillende handige functies.



- deze functie wordt gebruikt in opstelling () delen van het programma en dient om de conclusies te initialiseren die u als input zult gebruiken (INGANG) of verlaat (UITVOER). U kunt geen gegevens van de pin lezen of schrijven totdat u deze overeenkomstig hebt ingesteld pinMode. Deze functie heeft twee argumenten: pinNumber- Dit is het pincode dat u gaat gebruiken.

Modus- stelt in hoe de pin zal werken. Bij de ingang (INGANG) of verlaat (UITVOER). Om de LED aan te steken moeten we een signaal geven Van Arduino Om dit te doen, configureren we de pin om af te sluiten.
- deze functie dient om de toestand in te stellen (staat) pina (pinNumber). Er zijn twee hoofdtoestanden (in het algemeen zijn er 3), één is Hoog, de pin is 5v, een andere is Laag en de pin is 0v. Dus om de LED op te laten lichten, moeten we een hoog niveau instellen op de pin die op de LED is aangesloten Hoog.

- vertraging. Dient om het programma voor een bepaalde periode in ms uit te stellen.
Hieronder staat de code waardoor de LED gaat knipperen.
// LED knippert

int ledPin = 7; // Arduino-pin waarop de LED is aangesloten

ongeldige setup () {
  pinMode (ledPin, OUTPUT); // Stel de pin in als EXIT
}

leegte lus () {
  digitalWrite (ledPin, HIGH); // Steek de LED aan
  vertraging (1000); // vertraging 1000 ms (1 sec)
  digitalWrite (ledPin, LOW); // Schakel de LED uit
  vertraging (1000); // Wacht 1 sec
}


Een kleine uitleg over de code.
Regels die beginnen met "//" zijn opmerkingen van Arduino die ze negeren.
Alle commando's eindigen op een puntkomma; als je ze vergeet, krijg je een foutmelding.

ledpinis een variabele. Variabelen worden in programma's gebruikt om waarden op te slaan. In dit voorbeeld is de variabele ledpin toegewezen een waarde van 7, dit is het pincode van de Arduino. Wanneer de Arduino in het programma een string met een variabele tegenkomt ledpin , het zal de waarde gebruiken die we eerder hebben gespecificeerd.
Dus neem op pinMode (ledPin, OUTPUT) vergelijkbaar met record pinMode (7, OUTPUT).
Maar in het eerste geval volstaat het om de variabele te veranderen en het zal veranderen in elke regel waar het wordt gebruikt, en in het tweede geval, om de variabele te veranderen, moet je in elk commando wijzigingen aanbrengen in de pennen.

in de eerste regel geeft het type variabele aan. Bij het programmeren van Arduino is het belangrijk om altijd het type variabelen te declareren. Voor nu is het genoeg om dat te weten INT kondigt negatieve en positieve getallen aan.
Hieronder wordt gepresenteerd modelleren schets. Druk op start om de werking van het circuit te bekijken.



Zoals verwacht gaat de LED uit en licht op na een seconde. Wijzig de vertraging om te zien hoe het werkt.

Beheer van meerdere leds.

In dit voorbeeld leer je hoe je meerdere leds aanstuurt. Om dit te doen, installeer nog 3 LED's op het bord en sluit ze aan op de Arduino-weerstanden en -pennen, zoals hieronder weergegeven.



Om de LED's beurtelings in en uit te schakelen, moet je een programma als dit schrijven:
// Multi LED knippert

int led1Pin = 4;
int led2Pin = 5;
int led3Pin = 6;
int led4Pin = 7;

ongeldige setup () {
  // stel pinnen in als EXIT
  pinMode (led1Pin, OUTPUT);
  pinMode (led2Pin, OUTPUT);
  pinMode (led3Pin, OUTPUT);
  pinMode (led4Pin, OUTPUT);
}

leegte lus () {
  digitalWrite (led1Pin, HIGH); // Steek de LED aan
  vertraging (1000); // vertraging 1 sec
  digitalWrite (led1Pin, LOW); // zet de LED uit
  vertraging (1000); // vertraging 1 sec

  // doe hetzelfde voor de andere 3 LED's
  digitalWrite (led2Pin, HIGH); // Steek de LED aan
  vertraging (1000); // vertraging 1 sec
  digitalWrite (led2Pin, LOW); // doof de LED
  vertraging (1000); // vertraging 1 sec

  digitalWrite (led3Pin, HIGH); // Steek de LED aan
  vertraging (1000); // vertraging 1 sec
  digitalWrite (led3Pin, LOW); // doof de LED
  vertraging (1000); // vertraging 1 sec

  digitalWrite (led4Pin, HIGH); // Steek de LED aan
  vertraging (1000); // vertraging 1 sec
  digitalWrite (led4Pin, LOW); // doof de LED
  vertraging (1000); // vertraging 1 sec
}


Dit programma werkt prima, maar dit is niet de meest rationele oplossing. De code moet worden gewijzigd. Om ervoor te zorgen dat het programma keer op keer werkt, gebruiken we het construct genaamd.
Cycli zijn handig wanneer u dezelfde actie meerdere keren moet herhalen. In de bovenstaande code herhalen we de regels

digitalWrite (led4Pin, HIGH);
vertraging (1000);
digitalWrite (led4Pin, LOW);
vertraging (1000); 

volledige schetscode in de bijlage voor.zip [720 b] (downloads: 1410)

LED-helderheidsaanpassing

Soms moet u de helderheid van de leds in het programma wijzigen. Dit kan met de opdracht analogWrite (). Met deze opdracht wordt de LED zo snel in- en uitgeschakeld dat het oog deze flikkering niet ziet. Als de LED de helft van de tijd en de helft uit is, zal het visueel lijken alsof hij op de helft van zijn helderheid brandt. Dit wordt pulsbreedtemodulatie genoemd (PWM of PWM in het Engels). Shim wordt vrij vaak gebruikt, omdat het kan worden gebruikt om de "analoge" component te besturen met behulp van een digitale code. Niet alle Arduino-pinnen zijn hiervoor geschikt. Alleen die conclusies waarom een ​​dergelijke aanwijzing is getrokken "~"Je ziet het naast de pinnen 3,5,6,9,10,11.
Sluit een van uw LED's aan op een van de PWM-uitgangen (voor de auteur is dit pin 9). Voer nu de knipperende schets-LED uit, maar wijzig eerst de opdracht digitalWrite () op analogWrite (). analogWrite () Het heeft twee argumenten: de eerste is het pinnummer en de tweede is de PWM-waarde (0-255), in relatie tot LED's is dit hun helderheid en voor elektromotoren de rotatiesnelheid. Hieronder vindt u een voorbeeldcode voor verschillende LED-helderheid.
// Verander de helderheid van de LED

int ledPin = 9; // LED aangesloten op deze pin
ongeldige setup () {
  pinMode (ledPin, OUTPUT); // Initialiseer de pin voor uitvoer
}

leegte lus () {
  analogWrite (ledPin, 255); // Volledige helderheid (255/255 = 1)
  vertraging (1000); // Pauze 1 sec
  digitalWrite (ledPin, LOW); // zet de LED uit
  vertraging (1000); // Pauze 1 sec

  analogWrite (ledPin, 191); // helderheid op 3/4 (191/255 ~ = 0,75)
  vertraging (1000); // Pauze 1 sec
  digitalWrite (ledPin, LOW); // zet de LED uit
  vertraging (1000); // Pauze 1 sec

  analogWrite (ledPin, 127); // Halve helderheid (127/255 ~ = 0,5)
  vertraging (1000); // Pauze 1 sec
  digitalWrite (ledPin, LOW); // zet de LED uit
  vertraging (1000); // Pauze 1 sec

  analogWrite (ledPin, 63); // kwart helderheid (63/255 ~ = 0.25)
  vertraging (1000); // Pauze 1 sec
  digitalWrite (ledPin, LOW); // zet de LED uit
  vertraging (1000); // Pauze 1 sec
}


Probeer de PWM-waarde in de opdracht te wijzigen analogWrite ()om te zien hoe dit de helderheid beïnvloedt.
Vervolgens leert u hoe u de helderheid soepel kunt aanpassen van volledig naar nul. Je kunt natuurlijk een stuk code 255 keer kopiëren
analogWrite (ledPin, helderheid);
vertraging (5); // korte vertraging
helderheid = helderheid + 1;

Maar u begrijpt - het zal niet praktisch zijn. Hiervoor kunt u het beste de FOR-lus gebruiken die eerder werd gebruikt.
In het volgende voorbeeld worden twee cycli gebruikt, één om de helderheid te verlagen van 255 naar 0
voor (int helderheid = 0; helderheid = 0; helderheid -) {

analogWrite (ledPin, helderheid);
vertraging (5);

}

vertraging (5) gebruikt om de snelheid van stijging en daling van de helderheid te vertragen 5 * 256 = 1280 ms = 1,28 sec.)
De eerste regel gebruikt "helderheid"zodat de helderheidswaarde met 1 afneemt, elke keer dat de cyclus zich herhaalt. Houd er rekening mee dat de cyclus zo lang werkt als helderheid> = 0Het bord vervangen > op het bord >= we hebben 0 opgenomen in het helderheidsbereik. Deze schets is hieronder gemodelleerd.
// verander de helderheid soepel

int ledPin = 9; // LED is verbonden met deze pin

ongeldige setup () {
  pinMode (ledPin, OUTPUT); // Initialiseer de pin om af te sluiten
}

leegte lus () {
  // verhoog geleidelijk de helderheid (0 tot 255)
  voor (int helderheid = 0; helderheid = 0; helderheid -) {
    analogWrite (ledPin, helderheid);
    vertraging (5);
  }

  vertraging (1000); // Wacht 1 sec
 // verminder de helderheid soepel (255 tot 0)
  voor (int helderheid = 255; helderheid> = 0; helderheid -) {
    analogWrite (ledPin, helderheid);
    vertraging (5);
  }

  vertraging (1000); // Wacht 1 sec
}
}

Dit is niet erg zichtbaar, maar het idee is duidelijk.



RGB LED en Arduino

De RGB-led bestaat eigenlijk uit drie leds van verschillende kleuren in één behuizing.



Met verschillende LED's met verschillende helderheid, kunt u verschillende kleuren combineren en krijgen. Voor Arduino, waar het aantal gradaties van helderheid 256 is, krijg je 256 ^ 3 = 16581375 mogelijke kleuren. In werkelijkheid zullen er natuurlijk minder zijn.
De LED die we gaan gebruiken is de gewone kathode. D.w.z. alle drie de leds zijn via kathoden structureel verbonden met één aansluiting. We zullen deze pin verbinden met de GND-pin. De overige klemmen moeten via de begrenzingsweerstanden worden aangesloten op de PWM-klemmen. De auteur heeft conclusies 9-11 gebruikt, zodat het mogelijk is om elke LED afzonderlijk te bedienen. De eerste schets laat zien hoe u elke LED afzonderlijk kunt inschakelen.



// RGB LED - test

// pin verbindingen
int rood = 9;
int groen = 10;
int blauw = 11;

ongeldige setup () {
  pinMode (rood, OUTPUT);
  pinMode (blauw, OUTPUT);
  pinMode (groen, OUTPUT);
}

leegte lus () {
  // zet de rode LED aan / uit
  digitalWrite (rood, HOOG);
  vertraging (500);
  digitalWrite (rood, LOW);
  vertraging (500);
  
  // zet de groene LED aan / uit
  digitalWrite (groen, HOOG);
  vertraging (500);
  digitalWrite (groen, LAAG);
  vertraging (500);

  // zet de blauwe LED aan / uit
  digitalWrite (blauw, HOOG);
  vertraging (500);
  digitalWrite (blauw, LAAG);
  vertraging (500);
}


In het volgende voorbeeld worden de opdrachten gebruikt analogWrite () en om verschillende willekeurige helderheidswaarden voor LED's te krijgen. Je zult verschillende kleuren willekeurig zien veranderen.
// RGB LED - willekeurige kleuren

// pin verbindingen
int rood = 9;
int groen = 10;
int blauw = 11;
ongeldige setup () {
  pinMode (rood, OUTPUT);
  pinMode (blauw, OUTPUT);
  pinMode (groen, OUTPUT);
}
leegte lus () {
  // kies een willekeurige kleur
  analogWrite (rood, willekeurig (256));
  analogWrite (blauw, willekeurig (256));
  analogWrite (groen, willekeurig (256));
  delay (1000); // Wacht een seconde
}


Willekeurig (256)-Retourneert een willekeurig getal in het bereik van 0 tot 255.
In het bijgevoegde bestand is er een schets die vloeiende overgangen van kleuren van rood naar groen en vervolgens naar blauw, rood, groen, enz. Laat zien. transitions.zip [373 b] (downloads: 386)
Een voorbeeldschets werkt, maar er is veel dubbele code. U kunt de code vereenvoudigen door uw eigen helperfunctie te schrijven, die de ene kleur soepel naar de andere verandert.
Zo ziet het eruit: function.zip [263 b] (downloads: 420)
Laten we eens kijken naar de definitie van een functie in delen. Functie opgeroepen fader en heeft twee argumenten. Elk argument wordt gescheiden door een komma en heeft een type dat wordt gedeclareerd in de eerste regel van de functiedefinitie: leegte fader (int color1, int color2). Je ziet dat beide argumenten worden gedeclareerd als int, en ze krijgen namen kleur1 en color2 als voorwaardelijke variabelen voor het definiëren van een functie. Nietig betekent dat de functie geen waarden retourneert, het voert gewoon commando's uit. Als het nodig was om een ​​functie te schrijven die het resultaat van de vermenigvuldiging retourneerde, zou het er als volgt uitzien:
int multiplier (int nummer1, int nummer2) {

int product = nummer1 * nummer2;
product retourneren;

} 

Merk op hoe we Type hebben verklaard int als retourtype in plaats
nietig.
Binnen de functie zijn er opdrachten die je al in de vorige schets gebruikte, alleen de pincodes werden vervangen door kleur1 en color2. Functie opgeroepen fader, zijn argumenten worden berekend als color1 = rood en color2 = groen. Het archief volledige schets met behulp van functies functies.zip [392 b] (downloads: 320)

Knop

In de volgende schets wordt een knop met normaal open contacten gebruikt, zonder te bevestigen.

Arduino voor beginners

Dit betekent dat terwijl de knop niet wordt ingedrukt, de stroom er niet doorheen stroomt en na het loslaten de knop terugkeert naar zijn oorspronkelijke positie.
In het circuit wordt naast de knop een weerstand gebruikt. In dit geval beperkt het de stroom niet, maar "trekt" de knop naar 0v (GND). D.w.z. totdat de knop wordt ingedrukt op de pin van de Arduino waarmee hij is verbonden, zal het niveau laag zijn. De weerstand die wordt gebruikt in het 10 kΩ-circuit.

// definieer de knop klik
int buttonPin = 7;
ongeldige setup () {
  pinMode (buttonPin, INPUT); // Initialiseer de invoerpin
  Serial.begin (9600); // Initialiseer de seriële poort
}
leegte lus () {
  if (digitalRead (buttonPin) == HIGH) {// als de knop wordt ingedrukt
    Serial.println ("ingedrukt"); // print "geperst"
  } anders {
    Serial.println ("unpressed"); // anders "unpressed"
  }
}

Er zijn verschillende nieuwe teams in deze schets.
-Deze opdracht heeft de waarde Hoog (hoog niveau) en laag (laag niveau) van de uitvoer die we controleren. Voorheen moest deze uitvoer in setup () worden geconfigureerd voor invoer.
; // waar buttonPin het pincode is waar de knop is aangesloten.
Via de seriële poort kunt u Arduino-berichten naar de computer sturen, terwijl de controller zelf het programma uitvoert. Dit is handig voor het debuggen van een programma, het verzenden van berichten naar andere apparaten of applicaties. Om gegevensoverdracht via de seriële poort (ook bekend als UART of USART) mogelijk te maken, moet u deze initialiseren in setup ()

Serial.begin () heeft slechts één argument is de gegevensoverdrachtssnelheid tussen de Arduino en de computer.
schets, wordt een commando gebruikt om een ​​bericht op het scherm weer te geven in de Arduino IDE (Tools >> Serial Monitor).
- met het ontwerp kunt u de voortgang van het programma controleren door meerdere controles op één plaats te combineren.
Als (als) digitalRead HIGH retourneert, wordt het woord "ingedrukt" weergegeven op de monitor. Anders wordt (anderszins) het woord "geperst" weergegeven op de monitor. Nu kunt u proberen de LED met één druk op de knop aan en uit te zetten.
// knopdrukdetectie met LED-uitgang
int buttonPin = 7;
int ledPin = 8;
ongeldige setup () {
  pinMode (buttonPin, INPUT); // Deze keer zullen we de knop pin instellen als INPUT
  pinMode (ledPin, OUTPUT);
  Serial.begin (9600);
}
leegte lus () {
  if (digitalRead (buttonPin) == HIGH) {
    digitalWrite (ledPin, HIGH);
    Serial.println ("ingedrukt");
  } anders {
    digitalWrite (ledPin, LOW);
    Serial.println ("unpressed");
  }
}


Analoge ingang.

analoog lezen stelt u in staat om gegevens te lezen van een van de Arduino analoge pinnen en geeft een waarde weer in het bereik van 0 (0V) tot 1023 (5V). Als de spanning op de analoge ingang 2,5 V is, wordt 2,5 / 5 * 1023 = 512 afgedrukt
analoog lezen heeft slechts één argument: dit is het analoge ingangsnummer (A0-A5). De volgende schets geeft een code voor het aflezen van spanning van een potentiometer. Om dit te doen, sluit u een variabele weerstand, de extreme pinnen aan op pinnen 5V en GND, en de middelste pin op ingang A0.


Voer de volgende code uit en kijk in de seriële monitor hoe de waarden veranderen afhankelijk van de rotatie van de weerstandsknop.
// analoge ingang

int potPin = A0; // De centrale uitgang van de potentiometer is verbonden met deze pin

ongeldige setup () {
  // de analoge pin is standaard ingeschakeld door invoer, dus initialisatie is niet nodig
  Serial.begin (9600);
}

leegte lus () {
  int potVal = analogRead (potPin); // potVal is een getal tussen 0 en 1023
  Serial.println (potVal);
}

De volgende schets combineert een schets met een druk op de knop en een schets voor het regelen van de LED-helderheid. De LED gaat aan vanaf de knop en de potentiometer regelt de helderheid van de gloed.
// knopdrukdetectie met LED-output en variabele intensiteit
int buttonPin = 7;
int ledPin = 9;
int potPin = A0;
ongeldige setup () {
  pinMode (buttonPin, INPUT);
  pinMode (ledPin, OUTPUT);
  Serial.begin (9600);
}
leegte lus () {
  if (digitalRead (buttonPin) == HIGH) {// als knop is ingedrukt
    int analogVal = analogRead (potPin);
    int scaledVal = kaart (analogVal, 0, 1023, 0, 255);
    analogWrite (ledPin, scaledVal); // zet led aan met intensiteit ingesteld door pot
    Serial.println ("ingedrukt");
  } anders {
    digitalWrite (ledPin, LOW); // Zet uit als knop niet wordt ingedrukt
    Serial.println ("unpressed");
  }
}
8.7
9
9

Voeg een opmerking toe

    • lachglimlachtxaxaokweet het nietyahoonea
      baaskrabbendwaasjaja-jaagressiefgeheim
      sorrydansdance2dance3pardonhulpdrankjes
      stopvriendengoedgoedfluitjebezwijmdtong
      rookklappencrayverklarenbeledigenddon-t_mentiondownloaden
      hittebooslach1mdavergaderingmoskingnegatief
      not_ipopcornstraffenlezenschrikschriktzoeken
      bespottendankjewelditto_clueUmnikacuutmee eens
      slechtbeeeblack_eyeblum3: oopscheppenverveling
      gecensureerdbeleefdheidgeheim2bedreigenoverwinningyusun_bespectacled
      shokrespektlolvoorgekomenwelkomkrutoyya_za
      ya_dobryihelperne_huliganne_othodifludverbodsluiten
4 commentaar
Zo werkt het zoals het hoort - // verhoog geleidelijk de helderheid (0 tot 255)
voor (int helderheid = 0; helderheid <= 255; helderheid ++) {
analogWrite (ledPin, helderheid);
vertraging (5);
bij compilatie geeft een foutmelding Arduino: 1.6.5 (Windows 7), bord "Arduino Nano, ATmega328"

sketch_sep20a: 25: error: verwachte verklaring vóór '}' token
verwachte verklaring vóór '}' token
Ik heb de schets van soepele ontsteking gekopieerd.
Mijn LED licht scherp op, maar gaat soepel uit.

Leg uit alsjeblieft.
Ik heb de schets van soepele ontsteking gekopieerd.
Mijn LED licht scherp op, maar gaat soepel uit.

Leg uit alsjeblieft.

We raden je aan om te lezen:

Geef het voor de smartphone ...