Sisukord:

Robot, mis ütleb teile, kas elektroonikatarnija petab teid või mitte: 6 sammu
Robot, mis ütleb teile, kas elektroonikatarnija petab teid või mitte: 6 sammu

Video: Robot, mis ütleb teile, kas elektroonikatarnija petab teid või mitte: 6 sammu

Video: Robot, mis ütleb teile, kas elektroonikatarnija petab teid või mitte: 6 sammu
Video: В гостях у коренной Одесситки. Моя мечта сбылась!!! Прогулка по Одессе. 2024, November
Anonim
Robot, mis ütleb, kas elektroonikamüüja petab teid või mitte
Robot, mis ütleb, kas elektroonikamüüja petab teid või mitte

Eelmisel aastal läksime mina ja mu isa äsja avatud robootika-/elektroonikapoodi meie elukoha lähedale. Kui ma sinna sisenesin, oli see täis elektroonikat, serovisid, andureid, vaarika pisit ja arduinosid. Järgmisel päeval läksime samasse poodi ja ostsime palju sensoore ja 3 Arduinot umbes 150 USD väärtuses. Niipea kui koju läksin, ei töötanud ükski teine toode peale Arduino Mega. Meid peteti umbes 130 USD eest, mis on palju.

Niisiis, otsustasin luua roboti, mis suudab testida umbes 12 andurit ja 2 mootorit (töötab endiselt servoga) ja saab kindlaks teha, kas toode on vigane.

Läheme otse asja juurde!

Tarvikud

1. Arduino UNO

2. 2,4 -tolline puutetundlik TFT -ekraan

3. paar hüppaja juhet

4. andurid ja mootorid, et saaksite neid testida (siin kasutasin - liikumisandurit, gaasiandurit MQ6, heliandurit, potentsiomeetrit ja veetaseme andurit)

Samm: kuidas see toimib…

Image
Image

Olen programmeerinud Arduino TFT -ekraaniga interaktiivse kasutajaliidese loomiseks. Nagu me teame, on TFT -ekraanil ainult üks vaba tihvt, st A5 -tihvt. (kui kasutate UNO -d). Nii et kõik andurid, mis kasutavad andmete lugemiseks analoognõelu, ühilduvad selle seadistusega …

Kasutajaliideses saate muuta töölaua taustavärvi ja avada andurite testimiseks minu poolt Arduino jaoks välja töötatud rakenduse.

Rakenduse avamisel näete kahte valikut: INPUT ja OUTPUT. nii et kui klõpsate nuppu Sisend, kuvatakse see 4 andurit (see ühildub 12 -ga, kuid ma ei pea seda veel programmeerima, kuna eksamid lähenevad…. pole aega:(. Igaüks võib koodi muuta …)

Samuti saab see kontrollida, kas teie servomootor töötab, ühendades selle pesasse.

Vaata:

Samm: koodi üleslaadimine

Kood on 600 -realine programm, mille kodeerisin hoolikalt umbes 50 tunni jooksul. Sellel on mõned vead, nii et plz parandage seda ja saatke see mulle minu e -posti aadressile ([email protected]).

Laadige kood üles ja ühendage TFT -kilp Arduinoga. Soovitan teil kasutajaliidesega ringi mängida, et sellest paremini aru saada.

Kood:

#kaasake

#sisalda #sisalda #sisalda #defineeri LCD_CS A3 #define LCD_CD A2 #define LCD_WR A1 #define LCD_RD A0 #define LCD_RESET A4 #define Black #define MAGENTA 0xF81F #define YELLOW 0xFFE0 #define WHITE 0xFFFF #define LIGHTGREY 0xC618 #define PURPLE 0x780F #define OLIVE 0x7BE0 #define Selection #define YP A1 #define XP ##defineer 160 #define TS_MAXX 160 #define TS_MAXY 970 Puuteekraan ts = Puuteekraan (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 sound; char olek = 6; int touch = 0; int värv = MUST; int redir = 0; int ota; void setup () {Serial.begin (9600); tft.reset (); tft.setFont (& FreeMonoBoldOblique12pt7b); tft.binin (0x9325); tft.setRotation (45); tft.setTextSize (0,5); tft.fillScreen (VALGE); tft.setCursor (60, 160); tft.setTextColor (MUST); tft.print ("Pühkige sisse logimiseks"); } void loop () {float sensorVoltage; float sensorValue; TSPoint p = ts.getPoint (); pinMode (XM, OUTPUT); pinMode (YP, OUTPUT); kui (pz> MINPRESSURE && 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) {puudutus = 26; }} if (touch == 1 && state == 6) {tft.setRotation (0); tft.fillScreen (värv); heli = 0; tft.fillRect (200, 180, 80, 140, VALGE); tft.drawRect (201, 181, 81, 141, MUST); tft.fillRect (80, 30, 100, 100, CYAN); tft.drawRect (81, 31, 101, 101, MUST); tft.fillRect (10, 30, 50, 100, NAVY); tft.drawRect (11, 31, 51, 101, MUST); tft.fillRect (10, 180, 30, 120, PURPLE); tft.drawRect (11, 181, 31, 121, MUST); tft.fillRect (45, 180, 30, 120, SININE); tft.drawRect (46, 181, 31, 121, MUST); tft.fillRect (80, 180, 30, 120, CYAN); tft.drawRect (81, 181, 31, 121, MUST); tft.fillRect (115, 180, 30, 120, GREEN); tft.drawRect (116, 181, 31, 121, MUST); tft.fillRect (150, 180, 30, 120, KOLLANE); tft.drawRect (151, 181, 31, 121, MUST); tft.fillTriangle (210, 30, 210, 50, 220, 40, VALGE); tft.fillRect (200, 35, 12, 12, VALGE); tft.drawTriangle (210, 30, 210, 50, 220, 40, MUST); tft.drawRect (200, 35, 12, 12, MUST); tft.drawCircle (210, 40, 14, VALGE); //tft.fillTriange(a1, b1, a2, b2, c1, c2, RED); tft.setRotation (45); tft.setCursor (200, 20); tft.print ("Seaded"); tft.fillRoundRect (45, 75, 75, 75, 4, VALGE); tft.drawRoundRect (45, 75, 75, 75, 4, MUST); tft.fillRect (75, 75, 15, 30, MUST); tft.fillRect (75, 120, 15, 30, MUST); tft.fillRect (90, 105, 30, 15, MUST); tft.fillRect (45, 105, 30, 15, MUST); olek = 7; puudutus = 0; ota = 0; } if (touch == 2) {tft.fillScreen (VALGE); tft.setRotation (0); tft.fillTriangle (210, 30, 210, 50, 220, 40, VALGE); tft.fillRect (200, 35, 12, 12, VALGE); tft.drawTriangle (210, 30, 210, 50, 220, 40, MUST); tft.drawRect (200, 35, 12, 12, MUST); tft.drawCircle (210, 40, 14, MUST); tft.setRotation (45); tft.fillTriangle (270, 40, 270, 20, 260, 30, MUST); tft.drawLine (300, 30, 270, 30, MUST); tft.setCursor (20, 200); tft.print ("isikupärastamine"); tft.setCursor (20, 170); tft.print ("logi välja"); tft.setCursor (20, 140); tft.print ("välisseadmed"); tft.setCursor (20, 110); tft.print ("Teave"); puudutus = 1; olek = 2; } if (touch == 10 && state == 2) {tft.fillScreen (VALGE); tft.setCursor (10, 160); tft.setTextColor (MUST); tft.print ("Loodud ja arendatud"); tft.setCursor (100, 190); tft.print ("poolt:"); tft.setCursor (60, 220); tft.print ("Teismeline Indiast"); tft.setRotation (0); tft.fillTriangle (210, 30, 210, 50, 220, 40, VALGE); tft.fillRect (200, 35, 12, 12, VALGE); tft.drawTriangle (210, 30, 210, 50, 220, 40, MUST); tft.drawRect (200, 35, 12, 12, MUST); tft.drawCircle (210, 40, 14, MUST); tft.setRotation (45); tft.fillTriangle (270, 40, 270, 20, 260, 30, MUST); tft.drawLine (300, 30, 270, 30, MUST); olek = 6; } if (touch == 11 && state == 2) {tft.fillScreen (VALGE); tft.setCursor (60, 40); tft.print ("Vali a"); tft.setCursor (40, 60); tft.print ("taustavärv"); tft.fillRect (60, 180, 45, 45, PUNANE); tft.fillRect (120, 180, 45, 45, KOLLANE); tft.fillRect (180, 180, 45, 45, SININE); tft.fillRect (240, 180, 45, 45, GREEN); tft.fillRect (60, 130, 45, 45, MAGENTA); tft.fillRect (120, 130, 45, 45, NAVY); tft.fillRect (180, 130, 45, 45, LIGHTGREY); tft.fillRect (240, 130, 45, 45, CYAN); tft.fillRect (60, 80, 45, 45, VALGE); tft.drawRect (60, 80, 45, 45, MUST); tft.fillRect (120, 80, 45, 45, MUST); tft.fillRect (180, 80, 45, 45, OLIVE); tft.fillRect (240, 80, 45, 45, PURPLE); tft.setRotation (0); tft.fillTriangle (210, 30, 210, 50, 220, 40, VALGE); tft.fillRect (200, 35, 12, 12, VALGE); tft.drawTriangle (210, 30, 210, 50, 220, 40, MUST); tft.drawRect (200, 35, 12, 12, MUST); tft.drawCircle (210, 40, 14, MUST); tft.setRotation (45); tft.fillTriangle (270, 40, 270, 20, 260, 30, MUST); tft.drawLine (300, 30, 270, 30, MUST); olek = 6; kui (redir == 1) {värv = VALGE; } kui (redir == 2) {värv = MUST; } kui (redir == 3) {color = OLIVE; } kui (redir == 4) {värv = PURPLE; } kui (redir == 5) {värv = MAGENTA; } kui (redir == 6) {color = NAVY; } kui (redir == 7) {värv = LIGHTGREY; } kui (redir == 8) {värv = CYAN; } kui (redir == 9) {värv = PUNANE; } kui (redir == 10) {värv = KOLLANE; } kui (redir == 11) {värv = SININE; } kui (redir == 12) {värv = GREEN; }} kui (puudutus == 26) {ota = 1; tft.fillScreen (VALGE); tft.setRotation (0); tft.fillTriangle (210, 30, 210, 50, 220, 40, VALGE); tft.fillRect (200, 35, 12, 12, VALGE); tft.drawTriangle (210, 30, 210, 50, 220, 40, MUST); tft.drawRect (200, 35, 12, 12, MUST); tft.drawCircle (210, 40, 14, MUST); tft.setRotation (45); tft.fillTriangle (270, 40, 270, 20, 260, 30, MUST); tft.drawLine (300, 30, 270, 30, MUST); tft.setRotation (1); tft.setCursor (30, 80); tft.print ("Sisend"); tft.setCursor (30, 150); tft.print ("Väljund"); tft.drawRect (25, 130, 90, 30, MUST); tft.drawRect (25, 60, 90, 30, MUST); if (p.x> 190 && p.x 30 && p.y <90) {tft.setCursor (150, 220); tft.print ("Veetase"); tft.setCursor (150, 170); tft.print ("Gaasi tase"); tft.setCursor (150, 120); tft.print ("Kaugus"); tft.setCursor (150, 70); tft.print ("Heli"); puudutus = 1; olek = 2; }}} while (heli == 1) {tft.fillScreen (VALGE); sensorValue = analogRead (A5); sensorVoltage = sensorValue; tft.setCursor (60, 160); tft.print (sensorVoltage); Serial.println ("Helitase ="); Serial.println (sensorVoltage); viivitus (1000); if (heli == 0) {break; }}}}

Samm: vajalikud raamatukogud:

  • Adafruit_GFX.h
  • Adafruit_TFTLCD.h
  • Puuteekraan.h

Githubi lingid:

github.com/adafruit/Adafruit-GFX-Library

github.com/adafruit/TFTLCD-Library

github.com/adafruit/Adafruit_TouchScreen

Samm: ühendused

Pane see kõik kokku
Pane see kõik kokku

Teil on vaja 6 hüppajatraati. 3 isast ja 3 emast. jootke need otse Arduino tahvlile järgmiselt:

5. samm: lööge see kõik kokku

Tõmmake juhtmed arduino külge (vt pilti), vajadusel kasutage mõnda liimipüstolit …

Seejärel kinnitage TFT -kaitsekilp ja katsetage andureid.

Täname, et kerisite lõpuni alla. Hääletage kindlasti minu poolt, kui tundsite, et see projekt on ainulaadne ja kasulik

Õnnelik tegemine ja hoiduge elektroonikapetturite eest?

6. samm: täiendavad parandused:

  • Suurem andurite ühilduvus
  • Servomootori kood tuli lõpetada
  • Teine rakendus, mis saab liidestada Bluetooth -moodulitega, et saaksime sellega Bluetooth -toega robotit juhtida.
  • Veaparandused

Soovitan: