Inhoudsopgave:
- Benodigdheden
- Stap 1: Hoe het werkt…
- Stap 2: De code uploaden
- Stap 3: Bibliotheken vereist:
- Stap 4: De verbindingen
- Stap 5: klap het allemaal samen
- Stap 6: Verdere verbeteringen:
Video: Een robot die vertelt of een elektronicaverkoper je bedriegt of niet: 6 stappen
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:14
Vorig jaar gingen mijn vader en ik naar een pas geopende robotica-/elektronicawinkel vlakbij waar we wonen. Toen ik daar binnenkwam, zat het vol met elektronica, serovs, sensoren, Raspberry pis en Arduinos. De volgende dag gingen we naar dezelfde winkel en kochten veel senors en 3 Arduino's ter waarde van ongeveer 150 USD. Zodra ik naar huis ging, werkte geen enkel ander product behalve de Arduino Mega. We werden opgelicht voor ongeveer 130 USD, wat veel is.
Dus besloot ik een robot te maken die ongeveer 12 sensoren en 2 motoren kan testen (die nog steeds aan de servo werken) en kan bepalen of het product defect is.
Laten we er meteen op ingaan!
Benodigdheden
1. Arduino UNO
2. 2,4 TFT-aanraakscherm
3. paar jumperdraden
4. sensoren en motoren zodat je ze kunt testen (hier gebruikte ik - Bewegingssensor, MQ6 gassensor, Geluidssensor, potentiometer en waterniveausensor)
Stap 1: Hoe het werkt…
Ik heb een Arduino geprogrammeerd om een interactieve gebruikersinterface te maken met een TFT-scherm. Zoals we weten, heeft het TFT-scherm slechts één vrije pin, namelijk de A5-pin. (als u de UNO gebruikt). Dus elke sensor die analoge pinnen gebruikt om gegevens te lezen, is compatibel met deze opstelling…
In de gebruikersinterface kun je de achtergrondkleur van het bureaublad wijzigen en kun je de app openen die door mij voor Arduino is ontwikkeld om sensoren te testen.
Bij het openen van de app ziet u 2 opties, INPUT en OUTPUT. dus als je op Input klikt, worden 4 sensoren weergegeven (Het is compatibel met 12, maar ik moet het nog programmeren omdat de examens naderen … geen tijd:(. Iedereen is vrij om de code te bewerken …)
En het kan ook controleren of de servomotor werkt als u hem in de sleuf aansluit.
even kijken:
Stap 2: De code uploaden
De code is een programma van 600 regels dat ik minutieus heb gecodeerd in ongeveer 50 uur. Het heeft een paar bugs, dus plz wijzig het en stuur het naar mij in mijn e-mail ([email protected]).
Upload de code en sluit het TFT-schild aan op de Arduino. Ik raad je aan om met de gebruikersinterface te spelen, zodat je het beter onder de knie krijgt.
De code:
#erbij betrekken
#include #include #include #define LCD_CS A3 #define LCD_CD A2 #define LCD_WR A1 #define LCD_RD A0 #define LCD_RESET A4 #define BLACK 0x0000 #define BLUE 0x001F #define NAVY 0x000F #define RED 0xF800 #define GREEN 0x07E0 #define #define MAGENTA 0xF81F #define GEEL 0xFFE0 #define WHITE 0xFFFF #define LIGHTGREY 0xC618 #define PURPLE 0x780F #define OLIVE 0x7BE0 #define Selection #define YP A1 #define XM A2 #define YM 7 #define_MITS XP 6 #define_MIN 160 #define TS_MAXX 160 #define TS_MAXY 970 TouchScreen ts = TouchScreen(XP, YP, XM, YM, 300); Adafruit_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET); #define BOXSIZE 40 #define PENRADIUS 3 #define MINPRESSURE 10 #define MAXPRESSURE 1000 int geluid; char-status = 6; int-aanraking = 0; int kleur = ZWART; int redir = 0; int ota; void setup() { Serial.begin(9600); tft.reset(); tft.setFont(&FreeMonoBoldOblique12pt7b); tft.begin(0x9325); tft.setRotation(45); tft.setTextSize(0.5); tft.fillScreen(WIT); tft.setCursor(60, 160); tft.setTextColor(ZWART); tft.print("Veeg om in te loggen"); } void loop() { float sensorVoltage; vlottersensorWaarde; TSPoint p = ts.getPoint(); pinMode (XM, UITGANG); pinMode (YP, UITGANG); if (pz > MINDRUK && pz 240 && px 130 && py 240 && px 20 && py 240 && px 20 && py 160 && px 12 && py 240 && px 20 && py 240 && px 20 && py 40 && px 15 && py 150 && px 40 && py 150 && px 80 && py 150 && px 120 && py 150 && px 170 && py 90 && px 40 && py 90 && px 80 && py 90 && px 120 && py 150 && px 170 && py 150 && px 170 && py 150 && px 170 && py 150 && px 170 && py 150 && px 170 && py 100 && px 20 && py 200 && px 100 && py 100 && px 20 && py 100 && px 20 && py 100 && px 20 && py < 100) {aanraken = 26; } } if (touch == 1 && state == 6) { tft.setRotation(0); tft.fillScreen(kleur); geluid = 0; tft.fillRect(200, 180, 80, 140, WIT); tft.drawRect(201, 181, 81, 141, ZWART); tft.fillRect(80, 30, 100, 100, CYAAN); tft.drawRect(81, 31, 101, 101, ZWART); tft.fillRect(10, 30, 50, 100, MARINE); tft.drawRect(11, 31, 51, 101, ZWART); tft.fillRect(10, 180, 30, 120, PAARS); tft.drawRect(11, 181, 31, 121, ZWART); tft.fillRect(45, 180, 30, 120, BLAUW); tft.drawRect(46, 181, 31, 121, ZWART); tft.fillRect(80, 180, 30, 120, CYAAN); tft.drawRect(81, 181, 31, 121, ZWART); tft.fillRect(115, 180, 30, 120, GROEN); tft.drawRect(116, 181, 31, 121, ZWART); tft.fillRect(150, 180, 30, 120, GEEL); tft.drawRect (151, 181, 31, 121, ZWART); tft.fillTriangle(210, 30, 210, 50, 220, 40, WIT); tft.fillRect(200, 35, 12, 12, WIT); tft.drawTriangle(210, 30, 210, 50, 220, 40, ZWART); tft.drawRect(200, 35, 12, 12, ZWART); tft.drawCircle(210, 40, 14, WIT); //tft.fillTriange (a1, b1, a2, b2, c1, c2, ROOD); tft.setRotation(45); tft.setCursor(200, 20); tft.print("Instellingen"); tft.fillRoundRect(45, 75, 75, 75, 4, WIT); tft.drawRoundRect(45, 75, 75, 75, 4, ZWART); tft.fillRect(75, 75, 15, 30, ZWART); tft.fillRect(75, 120, 15, 30, ZWART); tft.fillRect(90, 105, 30, 15, ZWART); tft.fillRect(45, 105, 30, 15, ZWART); staat = 7; aanraken = 0; ota = 0; } if (touch == 2) { tft.fillScreen(WIT); tft.setRotatie(0); tft.fillTriangle(210, 30, 210, 50, 220, 40, WIT); tft.fillRect(200, 35, 12, 12, WIT); tft.drawTriangle(210, 30, 210, 50, 220, 40, ZWART); tft.drawRect(200, 35, 12, 12, ZWART); tft.drawCircle(210, 40, 14, ZWART); tft.setRotation(45); tft.fillTriangle(270, 40, 270, 20, 260, 30, ZWART); tft.drawLine(300, 30, 270, 30, ZWART); tft.setCursor(20, 200); tft.print("personalisatie"); tft.setCursor(20, 170); tft.print("uitloggen"); tft.setCursor(20, 140); tft.print("randapparatuur"); tft.setCursor(20, 110); tft.print("Over"); aanraken = 1; staat = 2; } if (raak == 10 && staat == 2){ tft.fillScreen(WIT); tft.setCursor(10, 160); tft.setTextColor(ZWART); tft.print("Gemaakt en ontwikkeld"); tft.setCursor(100, 190); tft.print("door:"); tft.setCursor(60, 220); tft.print("Een tiener uit India"); tft.setRotatie(0); tft.fillTriangle(210, 30, 210, 50, 220, 40, WIT); tft.fillRect(200, 35, 12, 12, WIT); tft.drawTriangle(210, 30, 210, 50, 220, 40, ZWART); tft.drawRect(200, 35, 12, 12, ZWART); tft.drawCircle(210, 40, 14, ZWART); tft.setRotation(45); tft.fillTriangle(270, 40, 270, 20, 260, 30, ZWART); tft.drawLine(300, 30, 270, 30, ZWART); staat = 6; } if (touch == 11 && state == 2){ tft.fillScreen(WIT); tft.setCursor(60, 40); tft.print("Kies een"); tft.setCursor(40, 60); tft.print("achtergrondkleur"); tft.fillRect(60, 180, 45, 45, ROOD); tft.fillRect(120, 180, 45, 45, GEEL); tft.fillRect(180, 180, 45, 45, BLAUW); tft.fillRect(240, 180, 45, 45, GROEN); tft.fillRect(60, 130, 45, 45, MAGENTA); tft.fillRect(120, 130, 45, 45, MARINE); tft.fillRect(180, 130, 45, 45, LICHTGRIJS); tft.fillRect(240, 130, 45, 45, CYAAN); tft.fillRect(60, 80, 45, 45, WIT); tft.drawRect(60, 80, 45, 45, ZWART); tft.fillRect(120, 80, 45, 45, ZWART); tft.fillRect(180, 80, 45, 45, OLIJF); tft.fillRect(240, 80, 45, 45, PAARS); tft.setRotatie(0); tft.fillTriangle(210, 30, 210, 50, 220, 40, WIT); tft.fillRect(200, 35, 12, 12, WIT); tft.drawTriangle(210, 30, 210, 50, 220, 40, ZWART); tft.drawRect(200, 35, 12, 12, ZWART); tft.drawCircle(210, 40, 14, ZWART); tft.setRotation(45); tft.fillTriangle(270, 40, 270, 20, 260, 30, ZWART); tft.drawLine(300, 30, 270, 30, ZWART); staat = 6; if (redir == 1){ kleur = WIT; } if (redir == 2){ kleur = ZWART; } if (redir == 3){ kleur = OLIJF; } if (redir == 4){ kleur = PAARS; } if (redir == 5){ kleur = MAGENTA; } if (redir == 6){ kleur = MARINE; } if (redir == 7){ kleur = LICHTGRIJS; } if (redir == 8){ kleur = CYAAN; } if (redir == 9){ kleur = ROOD; } if (redir == 10){ kleur = GEEL; } if (redir == 11){ kleur = BLAUW; } if (redir == 12){ kleur = GROEN; } } if (touch == 26){ ota = 1; tft.fillScreen(WIT); tft.setRotatie(0); tft.fillTriangle(210, 30, 210, 50, 220, 40, WIT); tft.fillRect(200, 35, 12, 12, WIT); tft.drawTriangle(210, 30, 210, 50, 220, 40, ZWART); tft.drawRect(200, 35, 12, 12, ZWART); tft.drawCircle(210, 40, 14, ZWART); tft.setRotation(45); tft.fillTriangle(270, 40, 270, 20, 260, 30, ZWART); tft.drawLine(300, 30, 270, 30, ZWART); tft.setRotatie(1); tft.setCursor(30, 80); tft.print("Invoer"); tft.setCursor(30, 150); tft.print("Uitvoer"); tft.drawRect(25, 130, 90, 30, ZWART); tft.drawRect(25, 60, 90, 30, ZWART); if (p.x > 190 && p.x 30 && p.y < 90){ tft.setCursor(150, 220); tft.print("Waterpeil"); tft.setCursor(150, 170); tft.print("Gasniveau"); tft.setCursor(150, 120); tft.print("Afstand "); tft.setCursor(150, 70); tft.print("Geluid"); aanraken = 1; staat = 2; } } } while (geluid == 1){ tft.fillScreen(WIT); sensorWaarde = analoog lezen (A5); sensorVoltage = sensorWaarde; tft.setCursor(60, 160); tft.print(sensorVoltage); Serial.println("Geluidsniveau = "); Serial.println(sensorVoltage); vertraging (1000); if (geluid == 0){ pauze; } } } }
Stap 3: Bibliotheken vereist:
- Adafruit_GFX.h
- Adafruit_TFTLCD.h
- TouchScreen.h
Github-links voor hetzelfde:
github.com/adafruit/Adafruit-GFX-Library
github.com/adafruit/TFTLCD-Library
github.com/adafruit/Adafruit_TouchScreen
Stap 4: De verbindingen
Je hebt 6 jumperdraden nodig. 3 mannen en 3 vrouwen. soldeer ze rechtstreeks op het Arduino-bord als volgt:
Stap 5: klap het allemaal samen
Steek de draden in de arduino (zie afbeelding), gebruik indien nodig een lijmpistool …
Bevestig vervolgens het TFT-schild en test vervolgens uw sensoren.
Bedankt voor het helemaal naar beneden scrollen. Zorg ervoor dat je op mij stemt als je vond dat dit project uniek en nuttig was
Veel plezier met maken en pas op voor elektronica-oplichters?
Stap 6: Verdere verbeteringen:
- Meer sensorcompatibiliteit
- Servomotorcode moest worden afgewerkt
- Een andere app die kan communiceren met Bluetooth-modules, zodat we er een door Bluetooth aangedreven robot mee kunnen besturen.
- Bugfixes
Aanbevolen:
Een e-mailmelding ontvangen wanneer een kanaal op ThingSpeak een tijdje niet is bijgewerkt: 16 stappen
Ontvang een e-mailmelding als een kanaal op ThingSpeak een tijdje niet is bijgewerkt: Achtergrondverhaal Ik heb zes geautomatiseerde kassen verspreid over Dublin, Ierland. Door een op maat gemaakte app voor mobiele telefoons te gebruiken, kan ik op afstand de geautomatiseerde functies in elke kas volgen en ermee communiceren. Ik kan de win handmatig openen / sluiten
Een Lenovo IdeaPad-laptop repareren die niet oplaadt: 3 stappen
Een Lenovo IdeaPad-laptop repareren die niet oplaadt: soms zijn opladers waardeloos. Soms is het echter niet de oplader. Maar nu is het tijd om te leren hoe u een laptop kunt opereren om deze te repareren!!! U HEBT NODIG: Een kruiskopschroevendraaier met een punt van 5 mm breed Een stroomaansluiting - zoek in Amazon naar (uw model)
Hat Not Hat - een hoed voor mensen die niet echt hoeden dragen, maar wel een hoed willen: 8 stappen
Hat Not Hat - een hoed voor mensen die niet echt hoeden dragen, maar wel een hoed willen Ervaring: Ik heb altijd gewenst dat ik een hoedenmens kon zijn, maar ik heb nog nooit een hoed gevonden die voor mij werkt. Deze "Hoed Niet Hoed", of fascinator zoals het wordt genoemd, is een uiterst knapperige oplossing voor mijn hoedenprobleem waarbij ik de Kentucky Derby zou kunnen bijwonen, vacu
Een tv repareren die niet kan worden ingeschakeld: 23 stappen
Een tv repareren die niet kan worden ingeschakeld: Moderne flatscreen-tv's hebben een bekend probleem met condensatoren die slecht worden. Als uw lcd- of led-tv niet aangaat of herhaaldelijk klikkende geluiden maakt, is de kans groot dat u honderden dollars kunt besparen door deze eenvoudige reparatie zelf te doen.Ik k
Mystic Crystal Ball (het vertelt je letterlijk je fortuin!): 3 stappen (met afbeeldingen)
Mystic Crystal Ball (Het vertelt je letterlijk je fortuin!): Leer hoe je een waarzeggerij maakt die je toekomst onthult wanneer je hem aanraakt! Het project bestaat uit drie basisonderdelen en kan in ongeveer vier uur worden gebouwd. Materialen:1. Capacitieve aanraaksensor: 1 - Arduino Uno Microcontroller 1