Inhoudsopgave:
2025 Auteur: John Day | [email protected]. Laatst gewijzigd: 2025-01-13 06:57
**Wordt bewerkt**
Voor het HKU arduino-project heb ik besloten om een desktop-organizer te maken met een LCD-scherm dat inspiratiecitaten weergeeft om je op te pikken wanneer je je potmeter draait!
Ik zal voornamelijk de arduino-technische dingen behandelen, zolang je zoiets als een houten kist hebt om je Arduino te verbergen en LCD in je persoonlijke oganisor elke gewenste vorm zou kunnen aannemen.
De dingen die je nodig hebt
- *arduino uno
- potmeter
- *mannelijke protyping-draden
- *LCD-module !Met SD-kaartlezer! (Ik heb arduino tft LCD)
- *micro SD kaart
- *hout (ik heb oude mini-lades gerecycled en wat houten reserveonderdelen gebruikt, zorg ervoor dat je op zijn minst een kleine doos kunt maken om je arduino in te verbergen!
Stap 1: De potmeter instellen op Arduino
sluit je potmeter aan zoals op de foto te zien is
om de potmeter aan het werk te krijgen start
Je moet beginnen met een aantal variabelen bovenaan je schets voor de installatie:
code:
const int analogInPin = A0; // Analoge ingangspen waarop de potentiometer is bevestigd
int sensorWaarde = 0; // waarde gelezen uit de pot int outputValue = 0; // waarde output naar de PWM (analoge uit)
In afbeelding 2 laat ik zien hoe de potmeter in de void loop is afgebeeld
code:
// lees de analoge in waarde:
sensorValue = analogRead (analogInPin); // wijs het toe aan het bereik van de analoge uitgang: outputValue = map (sensorValue, 0, 1023, 0, 255); String stuffToPrint = String (outputValue); // verander de analoge uit-waarde:
stuffToPrint.toCharArray(afdruk, 9); // statische tekst myScreen.setTextSize(1);
Serial.print ("sensor = "); Serial.print(sensorValue); Serial.print("\t output = "); Serial.println(outputValue);
vertraging (50);
dit brengt de analoge gegevens van de potmeter in kaart met een bereik van 0 tot 255, we zullen dit bereik gebruiken om onze lcd-diavoorstelling te besturen
Als je hulp nodig hebt bij het instellen van de potmeter; Ik heb de code uit deze handige tutorial gebruikt, de pinnen zijn exact hetzelfde en zullen in de volgende stappen werken met de LCD-instellingen.
www.toptechboy.com/arduino/lesson-11-arduin…
Stap 2: Het LCD-scherm instellen
Stel de pinnen in zoals in het bovenstaande voorbeeld.
Als je het goed hebt gedaan, zal je scherm wit oplichten.
Als je extra hulp nodig hebt of een voorbeeldcode wilt gebruiken om je display te testen, kun je de officiële tutorial voor deze module en de codevoorbeelden hier bekijken
we zullen in de volgende stap gedeeltelijk de "afbeelding van SD-kaart tekenen" gebruiken.
Stap 3: De diavoorstelling instellen
Nu we de potmeter en het LCD-scherm hebben ingesteld, kunnen we een "diavoorstelling" opzetten met behulp van de in kaart gebrachte waarden van de potmeter
Met behulp van het bereik van 0 tot 255 kunnen we een bepaald bereik aangeven waarin we de Arduino kunnen activeren om wat inhoud op het LCD-scherm weer te geven.
Eerste voorbeeld zoals weergegeven in afbeelding:
if (outputValue < 51) { // bereik één if (rangeOne == true) { rangeTwo = true; mijnScherm.setRotation(90); mijn Scherm.achtergrond (0, 0, 0); mijnScherm.slag(255, 255, 255); myScreen.text("Hallo daar geweldig, ", 10, 50); myScreen.text("draai de pin > naar", 10, 60); myScreen.text("aanmoediging krijgen.", 10, 70); bereikEen = onwaar;
Als de potmeter naar een bereik lager dan 51 draait, verschijnt op het scherm met weergave (in portretmodus = rotatie 90) wat tekst.
Om een afbeelding weer te geven, moet u ervoor zorgen dat uw SD CS-pin correct is gedefinieerd, anders kan de arduino de SD niet initialiseren (controleer dus uw kabels !!)
Als u de pinnen van uw LCD wilt controleren, kunt u de officiële gids raadplegen onder "het scherm aansluiten"
Ik heb mijn SD CS-pin nu als 4 gedefinieerd omdat ik bijvoorbeeld mijn draden door elkaar heb gehaald! - Ik ben blij om die kleine oopsie te delen, omdat het u veel tijd zal besparen bij het zoeken op internet naar de foutmelding "Initialiseren mislukt". Waarop op sommige forums wordt gezegd dat de oplossing is om een bepaald model SD-kaart te hebben. Controleer dus eerst je bedrading voordat je nieuwe SD-kaarten koopt!!
Stap 4: Voorbeeld van volledige code
#erbij betrekken
#include // Hardwarespecifieke bibliotheek #include
#define SD_CS 4 #define CS 10 #define DC 9 #define RESET 8
const int analogInPin = A0; // Analoge ingangspen waarop de potentiometer is bevestigd
int sensorWaarde = 0; // waarde gelezen uit de pot int outputValue = 0; // waarde output naar de PWM (analoge out) bool rangeOne = true; bool rangeTwo = waar; bool bereikDrie = waar; bool rangeFour = waar; bool rangeFive = waar;
TFT mijn Scherm = TFT (CS, DC, RESET);
PImage-afbeelding; const char afdruk[9];
void setup(){ Serial.begin(9600); mijnScherm.begin(); // probeer toegang te krijgen tot de SD-kaart Serial.print ("Initializing SD-kaart …"); if (!SD.begin(SD_CS)) { Serial.println("mislukt!"); opbrengst; } Serial.println("OK!");
// initialiseer en wis het GLCD-scherm myScreen.begin(); mijnScherm.achtergrond(255, 255, 255);
} void loop () {// lees de analoge in waarde: sensorValue = analogRead (analogInPin); // wijs het toe aan het bereik van de analoge uitgang: outputValue = map (sensorValue, 0, 1023, 0, 255); String stuffToPrint = String (outputValue); // verander de analoge uit-waarde:
stuffToPrint.toCharArray(afdruk, 9); // statische tekst myScreen.setTextSize(1);
Serial.print ("sensor = "); Serial.print(sensorValue); Serial.print("\t output = "); Serial.println(outputValue);
vertraging (50);
if (outputValue to", 10, 60); myScreen.text("aanmoediging krijgen.", 10, 70); rangeOne = false; } } if(outputValue > 52 && outputValue 102 && outputValue 154 && outputValue < 205){ / /range four if (rangeFour == true){ rangeThree = true; rangeFive = true; myScreen.setRotation(90); myScreen.background(255, 255, 255); // clear the screen image = myScreen.loadImage("quote2.bmp"); //schrijf de afbeelding op het scherm myScreen.image(image, 0, 0); myScreen.stroke(255, 255, 255); myScreen.text("Ik ben zo trots", 10, 50); myScreen.text("van jou!", 10, 60); rangeFour = false; } }
if(outputValue > 206 && outputValue