Robotic camerasysteem Dolly (28 / 49 stap)

Stap 28: Program de Arduinos


Upload deze code naar de Arduino beheersing van het schild van de aanraking:

#include < Wire.h > #include < Adafruit_GFX.h > camera tuig Touch Screen Controller / / Core grafische bibliotheek #include < Adafruit_TFTLCD.h > / / hardwarespecifieke bibliotheek #include < TouchScreen.h > #if defined(__SAM3X8E__) #undef __FlashStringHelper::F(string_literal) #define F(string_literal) string_literal #endif #ifndef USE_ADAFRUIT_SHIELD_PINOUT #error "deze schets is bedoeld voor gebruik met het TFT LCD schild. Zorg ervoor dat USE_ADAFRUIT_SHIELD_PINOUT #defined in de Adafruit_TFTLCD.h bibliotheek bestand."#endif / / dit zijn de pinnen voor het schild! #define YP A1 / / moet worden van een analoge pin, "An" notatie gebruiken! #define XM A2 / / moet worden van een analoge pin, "An" notatie gebruiken! #define YM 7 / / kan een digital pin #define XP 6 / / kan de __SAM3X8E__ van een digital pin #ifdef #define TS_MINX 125 #define TS_MINY 170 #define TS_MAXX 880 #define TS_MAXY 940 #else #define TS_MINX 150 #define TS_MINY 120 #define TS_MAXX 920 #define TS_MAXY 940 #endif / / voor betere precisie van de druk, we willen weten van de weerstand / / tussen X + en X - gebruik een multimeter om het te lezen / / voor degene die we gebruiken , haar 300 ohm over de X plaat TouchScreen ts = TouchScreen (XP, YP, XM, YM, 300); #define LCD_CS A3 #define LCD_CD A2 #define LCD_WR A1 #define LCD_RD A0 / / leesbare namen toewijzen aan bepaalde gemeenschappelijke waarden van de 16-bits kleuren: #define BLACK 0x0000 #define 0x001F BLUE #define rood 0xF800 #define GREEN 0x07E0 #define 0x07FF cyaan #define MAGENTA 0xF81F #define 0xFFE0 gele #define WHITE 0xFFFF #define LBLUE 0x65FF Adafruit_TFTLCD tft; int oldcolor, currentcolor; BOOL pan = 1; int panPosition1 = 20; int panPosition2 = 20; BOOL tilt = 0; int tiltPosition1 = 20; int tiltPosition2 = 20; BOOL station = 0; int drivePosition1 = 20; int drivePosition2 = 20; BOOL tijd = 0; int timePosition1 = 20; int timePosition2 = 20; int startSend = 0; int x; void setup(void) {Wire.begin(); / / i2c bus (adres facultatief voor master) join Serial.begin(9600); tft.reset(); uint16_t-id = tft.readID(); if(identifier == 0x9325) {Serial.println (F ("gevonden ILI9325 LCD-rijder"));} anders if(identifier == 0x9328) {Serial.println (F ("gevonden ILI9328 LCD-rijder"));} anders if(identifier == 0x7575) {Serial.println (F ("gevonden HX8347G LCD-rijder"));} anders {Serial.print (F ("onbekende LCD driver chip:")); Serial.println (id, HEX); terugkeer; } tft.begin(identifier); tft.setRotation(1); tft.fillScreen(BLACK); drawMenu(); tft.drawRect (0, 0, 58, 40, wit); set eerste schuifregelaar Staten tft.drawRect (19 89, 272, 6, WHITE); tft.fillRect (20 90, 270, 4, geel); tft.drawRect (panPosition1, 71, 17, 42, wit); tft.fillRect ((panPosition1 + 1), 72, 15, 40, MAGENTA); tft.drawRect (19, 169, 272, 6, WHITE); tft.fillRect (20, 170, 270, 4, geel); tft.drawRect (panPosition2, 151, 17, 42, wit); tft.fillRect ((panPosition2 + 1), 152, 15, 40, MAGENTA); currentcolor = rood; pinMode (13, OUTPUT); } #define MINPRESSURE 10 #define MAXPRESSURE 1000 void loop {digitalWrite (13, hoge); Punt p = ts.getPoint(); digitalWrite (13, laag); Als deelt pennen, zult u moeten herstellen van de richtingen van de touchscreen pennen pinMode (XM, uitvoer); pinMode (YP, uitvoer); We hebben enkele minimale druk wij overwegen 'geldig' / / druk van 0 betekent geen dringende! Als (p.z > MINPRESSURE & & p.z < MAXPRESSURE) {/ / schaal van 0 -> 1023 te tft.width p.x = kaart (p.x, TS_MINX, TS_MAXX, tft.width(), 0); p.y = kaart (p.y, TS_MINY, TS_MAXY, tft.height(), 0); / / *** / / TOP MENUSELECTIE CODE! / / *** als (p.x > 300) {oldcolor = currentcolor; als (p.y < 58) {currentcolor = rood; tft.drawRect (0, 0, 58, 40, wit); pan = 1; kantelen = 0; station = 0; tijd = 0; drawSliders();} anders als (p.y < 140) {currentcolor = LBLUE; tft.drawRect (58 0, 82, 40, WITTE); pan = 0; Tilt = 1; Station = 0; tijd = 0; drawSliders(); } anders als (p.y < 180) {currentcolor = blauw; tft.drawRect (140, 0, 96, 40, wit); pan = 0; kantelen = 0; station = 1; tijd = 0; drawSliders();} anders als (p.y < 240) {currentcolor = groen; tft.drawRect (236, 0, 82, 40, wit); pan = 0; kantelen = 0; station = 0; tijd = 1; drawSliders();}} //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! MOET IK DIT HELEMAAL??? KAN HET MENU TEKENEN NET GELEZEN??? Als (oldcolor! = currentcolor) {als (oldcolor == RED) drawMenu(); als (oldcolor == LBLUE) drawMenu(), als (oldcolor == groen) drawMenu(); als (oldcolor == blauw) drawMenu();} / / *** / / START selectie CODE!!! Als (p.x < 40) {als (p.y > 180) {tft.drawRect (220 200, 96, 40, wit); startSend = 1;}} / / *** //SLIDER CODE! //Top SLIDER als (p.x > 180 & & p.x < 260) {als (p.y < 350) {als (p.y > = 20) {/ / of so... voor eerste zwarte vierkante... //need onderkant remap en top remap!!
! p.y = kaart (p.y, 0, 0, 240 en 300); tft.fillRect (10, 71, (p.y - 10), 50, zwart); } tft.drawRect ((p.y-1) 71, 17, 42, witte); tft.fillRect (p.y, 72, 15, 40, MAGENTA); tft.fillRect ((p.y + 16), 71, (282 - p.y), 50, zwart); tft.drawRect ((p.y + 15), 89, (272 - p.y), 6, WHITE); tft.fillRect ((p.y + 16), 90, (270 - p.y), 4, geel); tft.drawRect (19, 89, (p.y - 19), 6, WHITE); tft.fillRect (20, 90, (p.y - 20), 4, geel); Als (pan == 1) {panPosition1 = p.y; / / Serial.println(panPosition1);} anders if(tilt == 1) {tiltPosition1 = p.y;} else if(drive == 1) {drivePosition1 = p.y;} anders if(time == 1) {timePosition1 = p.y;}} } //BOTTOM SLIDER als (p.x > 80 & & p.x < 160) {als (p.y < 350) {als (p.y > = 20) {/ / of so... voor eerste zwarte vierkante... //need onderkant remap en top remap! p.y = kaart (p.y, 0, 0, 240 en 300); tft.fillRect (10, 151, (p.y - 10), 50, BLACK);} tft.drawRect ((p.y-1) 151, 17, 42, witte); tft.fillRect (p.y, 152, 15, 40, MAGENTA); tft.fillRect ((p.y + 16) 151, (282 - p.y), 50, zwart); tft.drawRect ((p.y + 15), 169, (272 - p.y), 6, WHITE); tft.fillRect ((p.y + 16), 170, (270 - p.y), 4, geel); tft.drawRect (19, 169, (p.y - 19), 6, WHITE); tft.fillRect (20, 170, (p.y - 20), 4, geel); Als (pan == 1) {panPosition2 = p.y; Serial.println(panPosition2); anders} if(tilt == 1) {tiltPosition2 = p.y;} else if(drive == 1) {drivePosition2 = p.y;} anders if(time == 1) {timePosition2 = p.y;}} } / / *** //TRANSMITS aan andere ARDUINO / / *** if(startSend == 1) {transmitValues(); startSend = 0; delay(2000); drawMenu(); als (pan == 1) tft.drawRect (0, 0, 58, 40, wit); als (kantelen == 1) tft.drawRect (58, 0, 82, 40, wit); als (station == 1) tft.drawRect (140, 0, 96, 40, wit); als (tijd == 1) tft.drawRect (236, 0, 82, 40, wit);}} } ongeldig transmitValues() {Wire.beginTransmission(2); / / verzenden naar apparaat #2 x = panPosition1; Wire.write("a"); stuurt vijf bytes Wire.write(x); Wire.endTransmission(); stoppen met het verzenden van delay(100); Wire.beginTransmission(2); verzenden naar apparaat #2 x = panPosition2; Wire.write("b"); stuurt vijf bytes Wire.write(x); Wire.endTransmission(); stoppen met het verzenden van delay(100); Wire.beginTransmission(2); verzenden naar apparaat #2 x = tiltPosition1; Wire.write("c"); Wire.write(x); Wire.endTransmission(); stoppen met het verzenden van delay(100); Wire.beginTransmission(2); verzenden naar apparaat #2 x = tiltPosition2; Wire.write("d"); Wire.write(x); Wire.endTransmission(); stoppen met het verzenden van delay(100); Wire.beginTransmission(2); verzenden naar apparaat #2 x = drivePosition1; Wire.write("e"); stuurt vijf bytes Wire.write(x); Wire.endTransmission(); stoppen met het verzenden van delay(100); Wire.beginTransmission(2); verzenden naar apparaat #2 x = drivePosition2; Wire.write("f"); stuurt vijf bytes Wire.write(x); Wire.endTransmission(); stoppen met het verzenden van delay(100); Wire.beginTransmission(2); verzenden naar apparaat #2 x = timePosition1; Wire.write("g"); Wire.write(x); Wire.endTransmission(); stoppen met het verzenden van delay(100); Wire.beginTransmission(2); verzenden naar apparaat #2 x = timePosition2; Wire.write("h"); Wire.write(x); Wire.endTransmission(); stoppen met het verzenden van delay(100); Wire.beginTransmission(2); verzenden naar apparaat #2 x = startSend; Wire.write("i"); Wire.write(x); Wire.endTransmission(); ongeldig drawSliders() stop verzenden} {als (oldcolor ! = currentcolor) {tft.fillRect (10, 60, 200, 300 zwart);} if(pan == 1) {tft.drawRect (19 89, 272, 6, WHITE); tft.fillRect (20 90, 270, 4, geel); tft.drawRect (panPosition1, 71, 17, 42, wit); tft.fillRect ((panPosition1 + 1) 72, 15, 40, MAGENTA); tft.drawRect (19, 169, 272, 6, WHITE); tft.fillRect (20, 170, 270, 4, geel); tft.drawRect (panPosition2, 151, 17, 42, wit); tft.fillRect ((panPosition2 + 1) 152, 15, 40, MAGENTA);} anders if(tilt == 1) {tft.drawRect (19 89, 272, 6, WITTE); tft.fillRect (20 90, 270, 4, geel); tft.drawRect (tiltPosition1, 71, 17, 42, wit); tft.fillRect ((tiltPosition1 + 1), 72, 15, 40, MAGENTA); tft.drawRect (19, 169, 272, 6, WHITE); tft.fillRect (20, 170, 270, 4, geel); tft.drawRect (tiltPosition2, 151, 17, 42, wit); tft.fillRect ((tiltPosition2 + 1), 152, 15, 40, MAGENTA); } anders if(drive == 1) {tft.drawRect (19 89, 272, 6, WHITE); tft.fillRect (20 90, 270, 4, geel); tft.drawRect (drivePosition1, 71, 17, 42, wit); tft.fillRect ((drivePosition1 + 1) 72, 15, 40, MAGENTA); tft.drawRect (19, 169, 272, 6, WHITE); tft.fillRect (20, 170, 270, 4, geel); tft.drawRect (drivePosition2, 151, 17, 42, wit); tft.fillRect ((drivePosition2 + 1) 152, 15, 40, MAGENTA);} anders if(time == 1) {tft.drawRect (19, 89 272, 6, WHITE); tft.fillRect (20 90, 270, 4, geel); tft.drawRect (timePosition1, 71, 17, 42, wit); tft.fillRect ((timePosition1 + 1), 72, 15, 40, MAGENTA); tft.drawRect (19, 169, 272, 6, WHITE); tft.fillRect (20, 170, 270, 4, geel); tft.drawRect (timePosition2, 151, 17, 42, wit); tft.fillRect ((timePosition2 + 1), 152, 15, 40, MAGENTA); }} ongeldig drawMenu() {tft.fillRect (236, 0, 82, 40, GREEN); tft.fillRect (140, 0, 96, 40, blauw); tft.fillRect (58, 0, 82, 40, LBLUE); tft.fillRect (0, 0, 58, 40, RED); tft.drawChar (2, 10, 'P', wit, rood, 3); tft.drawChar (20, 10, 'A', wit, rood, 3); tft.drawChar (38, 10, 'N', wit, rood, 3); tft.drawChar (64, 10, 'T', wit, LBLUE, 3); tft.drawChar (82, 10, 'I', WHITE, LBLUE, 3); tft.drawChar (100 10, 'L', WHITE, LBLUE, 3); tft.drawChar (118, 10, 'T', wit, LBLUE, 3); tft.drawChar (144, 10, zou ', wit, blauw, 3); tft.drawChar (162, 10, 'R', wit, blauw, 3); tft.drawChar (180, 10, 'I', wit, blauw, 3); tft.drawChar (198, 10, 'V', wit, blauw, 3); tft.drawChar (216, 10, 'E', wit, blauw, 3); tft.drawChar (242, 10, 'T', wit, groen, 3); tft.drawChar (260, 10, 'I', wit, groen, 3); tft.drawChar (278, 10, ben ", wit, groen, 3); tft.drawChar (296, 10, 'E', wit, groen, 3); tft.fillRect (220 200, 96, 40, blauw); tft.drawChar (224, 210, de ' witte, blauwe, 3); tft.drawChar (242, 210, 'T', wit, blauw, 3); tft.drawChar (260, 210, 'A', wit, blauw, 3); tft.drawChar (278, 210, 'R', wit, blauw, 3); tft.drawChar (296, 210, 'T', wit, blauw, 3); } < br >

Upload deze code naar de Arduino die de motor controleren zullen:

Camera tuig motorcontroller #include < Servo.h > #define ENC_A 14 #define ENC_B 15 #define ENC_PORT PINC Servo panServo; Servo tiltServo; int afstand = 0; BOOL stateChange = 0; int motorPin = 3; LED aangesloten op digital pin 9 float driveX = 0; zweven tiltX = 0; zweven panX = 0; zweven timeX = 0; zweven driveZ = 0; zweven tiltZ = 0; zweven panZ = 0; zweven picZ = 0; int distanceToGo = 0; voor programma int progStart = 0; voor testen //int progStart = 1; int motorSpeed; float totalTilt; float totalPan; float totalDrive; float panIncrement; float tiltIncrement; float driveIncrement; zweven picsPerPanIncrement = 1; zweven picsPerTiltIncrement = 1; zweven picsPerDriveIncrement = 1; int panSteps = 0; int tiltSteps = 0; int driveSteps = 0; char dataRx [20]; #include < Wire.h > void setup {Wire.begin(2); / / join i2c bus met adres #2 Wire.onReceive(receiveEvent); / / registreren gebeurtenis Serial.begin(9600); / / start serieel voor uitvoer panServo.attach(4); tiltServo.attach(5); tiltServo.writeMicroseconds(1100); panServo.writeMicroseconds(1500); delay(10000); pinMode (8, OUTPUT); pinMode (ENC_A, INPUT); digitalWrite (ENC_A, hoge); pinMode (ENC_B, INPUT); digitalWrite (ENC_B, hoge);} void loop {if(progStart == 1) {tiltX = kaart (tiltX 0, 255, 750, 1450); tiltZ = kaart (tiltZ, 0, 255, 750, 1450); panX = kaart (panX, 0, 255, 600, 2200); panZ = kaart (panZ, 0, 255, 600, 2200); Serial.println(panX); Serial.println(panZ); if(timeX < 5) {motorSpeed = 150; driveX = (driveX, 0, 0, 255 180); timeX = 0;} else {motorSpeed = 75; driveX = (driveX, 0, 0, 255 360);} totalPan = (panX - panZ); totalPan = abs(totalPan); totalTilt = tiltX - tiltZ; totalTilt = abs(totalTilt); totalDrive = driveX; Serial.println(totalPan); //Figure uit hoe ver gaan voordat het nemen van foto's / / afwisselend, hoeveel foto's te nemen voor het bevorderen van / / *** / /!!!!!!!!!!!!!!!!!!!! DEZE MOETEN NEUKEN DRIJVERS EN SHIT! //! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! panIncrement = totalPan / picZ; if(totalPan < picZ) {picsPerPanIncrement = 1 / panIncrement; panIncrement = 1;} tiltIncrement = totalTilt / picZ; if(totalTilt < picZ) {picsPerTiltIncrement = 1 / tiltIncrement; tiltIncrement = 1;} driveIncrement = totalDrive / picZ; if(totalDrive < picZ) {picsPerDriveIncrement = 1 / driveIncrement; driveIncrement = 1;} / / *** //move servo's in de oorspronkelijke posities / / *** tiltServo.writeMicroseconds(tiltX); panServo.writeMicroseconds(panX); delay(10000); //Take enkele foto's en sommige spullen verplaatsen / / *** voor (int takingPictures = 0; takingPictures < picZ; takingPictures ++) {als (panSteps > = picsPerPanIncrement) {if(panX > panZ) {panServo.writeMicroseconds (panX - panIncrement); panX = panX - panIncrement;} anders if(panX < panZ) {panServo.writeMicroseconds (panX + panIncrement); panX = panX + panIncrement;} else {panServo.writeMicroseconds(panX)}; panSteps = 0; } Als (tiltSteps > = picsPerTiltIncrement) {if(tiltX > tiltZ) {tiltServo.writeMicroseconds (tiltX - tiltIncrement); tiltX = tiltX - tiltIncrement;} anders if(tiltX < tiltZ) {tiltServo.writeMicroseconds (tiltX + tiltIncrement); tiltX = tiltX + tiltIncrement;} else {tiltServo.writeMicroseconds(tiltX)}; tiltSteps = 0; } Als (driveSteps > = picsPerDriveIncrement) {analogWrite (motorPin, motorSpeed) while(distance < distanceToGo) {callEncoder()}; analogWrite (motorPin, 0); driveSteps = 0;} distanceToGo = distanceToGo + driveIncrement; delay(timeX * 500); Serial.println ("SHOOT!!
!"); nemen van de foto digitalWrite (8, hoge); Sluit de camera trigger delay(500); wachten op een tweede digitalWrite (8, laag); Koppel de camera trigger delay(500); panSteps = panSteps + 1; tiltSteps = tiltSteps + 1; driveSteps = driveSteps + 1; progStart = 0; }}} / / functie die wordt uitgevoerd wanneer gegevens wordt gevraagd door meester / / deze functie als een gebeurtenis is geregistreerd, Zie Setup void receiveEvent (int houder) {int index = 0; terwijl (1 < Wire.available()) / / doorlopen alle, maar de laatste {char c = Wire.read(); / / ontvangen byte als een teken / / Serial.print(c); / / print de karakter-dataRx [index ++] = c; dataRx [index] = '\0';} int x = Wire.read(); / / ontvangen byte als integer / / Serial.println(x); / / het gehele getal afdrukken als (* dataRx == 'a') {panX = x; Serial.Print ("OMG PARSEREN PANX:"); Serial.println(panX); } else if (* dataRx == 'b') {panZ = x; Serial.Print ("OMG PARSEREN PANZ:"); Serial.println(panZ); } else if (* dataRx == 'c') {tiltX = x; Serial.Print ("OMG PARSEREN TILTX:"); Serial.println(tiltX); } else if (* dataRx == had') {tiltZ = x; Serial.Print ("OMG PARSEREN TILTZ:"); Serial.println(tiltZ); } else if (* dataRx == "e") {driveX = x; Serial.Print ("OMG PARSEREN DRIVEX:"); Serial.println(driveX); } else if (* dataRx == 'f') {driveZ = x; Serial.Print ("OMG PARSEREN DRIVEZ:"); Serial.println(driveZ); } else if (* dataRx == 'g') {timeX = x; Serial.Print ("OMG PARSEREN TIMEX:"); Serial.println(timeX); } else if (* dataRx == 'h') {picZ = x; Serial.Print ("OMG PARSEREN PICZ:"); Serial.println(picZ); } else if (* dataRx == 'i') {progStart = x; Serial.Print ("OMG PARSEREN START:"); Serial.println(progStart); }} / * rendementen wijzigen in encoder staat (-1,0,1) * / int8_t read_encoder() {statische int8_t enc_states [] = {0, - 1,1,0,1,0,0, -1, - 1,0,0,1,0,1,-1,0}; statische uint8_t old_AB = 0; / ** / old_AB << = 2; //remember vorige staat old_AB | = (ENC_PORT & 0x03); //add huidige status terug (enc_states [(old_AB & 0x0f)]);} ongeldig callEncoder() {/ / analogWrite (motorPin, 0); / / delay(1000); / / / / //30Dst @ 150Sp / / //60Dst @ 75Sp / / //60Dst @ 50Sp / / / / terwijl (afstand < 240) {/ / analogWrite (motorPin 75); } statische uint8_t counter = 0; Deze variabele wordt gewijzigd door encoder input int8_t tmpdata; / ** / tmpdata = read_encoder(); Als (tmpdata) {/ / Serial.print ("Counter waarde:"); Serial.println (counter, DEC); teller += tmpdata; if(Counter == 255) {stateChange = 1;} if(counter == 0) {if(stateChange == 1) {stateChange = 0; afstand += 1; Serial.Print ("stappen:"); Serial.println (afstand, DEC); }}}} < br >

Gerelateerde Artikelen

SparkRover - 3D gedrukte Smartphone gecontroleerd Robot

SparkRover - 3D gedrukte Smartphone gecontroleerd Robot

Loop der jaren heb ik verschillende grote robots met een op maat gemaakte robotica-stuurprogramma dat ik heb genaamd het SmartRover systeem gemaakt gebouwd. Dit stuurprogramma werd aanvankelijk gebruikt voor mijn SmartRover robot die ik gebouwd dat l
Beginners Guide to Maya: Robots

Beginners Guide to Maya: Robots

Autodesk Maya is een geweldig hulpmiddel voor het maken van complexe modellen. Als je wat je doet weet, kunt je vrij veel ontwerp iets met Maya. In dit instructable, ik zal uw gids voor eenvoudige veelhoek modellering in Maya. Zelfs met basishulpmidd
Gesture controlled robot

Gesture controlled robot

Wilt u controle dingen uit een simpel gebaar gemaakt door je vingers. Wilt u alles wat beweegt of stoppen volgens uw vingers. Als dat het geval is, dan bent u aan het juiste adres. Deze dagen gebaren zijn van groot belang. In ons dagelijks leven gebr
Zelfgemaakte professionele Video DSLR Camera schuifregelaars DIY Dolly stabilisator gemotoriseerde lineaire CNC

Zelfgemaakte professionele Video DSLR Camera schuifregelaars DIY Dolly stabilisator gemotoriseerde lineaire CNC

Zelfgemaakte professionele Video DSLR Camera schuifregelaars DIY Dolly stabilisator gemotoriseerde lineaire CNC stap voor stapMaterialen:Reizen 600 mm langPC's Aluminium 110 x 136 x 6 mm2 stuks Aluminium 20 x 20 x 240 mm4-delige SK12 12mm lineaire sp
Zelfgemaakte professionele Video DSLR Camera schuifregelaars DIY lange Dolly stabilisator gemotoriseerde lineaire CNC

Zelfgemaakte professionele Video DSLR Camera schuifregelaars DIY lange Dolly stabilisator gemotoriseerde lineaire CNC

Zelfgemaakte professionele Video DSLR Camera schuifregelaars DIY lange Dolly stabilisator gemotoriseerde lineaire CNCMaterialen:600 mm reizen dia1 stk Nema 17 42BYGHW811 0.48N.m(70oz-in) 48mm 2.5A voor de 3D-printer2 stuks 12 mm 12 x 700 mm lineaire
Mikey, de Robot met visie

Mikey, de Robot met visie

Mikey de Robot "ziet de kikker" met behulp van de Pixy camerasysteem met visie. Pixy kost ongeveer $70. en gemakkelijk interfaces met een meegeleverde kabel aan Arduino. Pixy kan worden "getraind" in het herkennen van maximaal zeven ve
Camera Dolly, gebruikt in de video van onze "Drone Haters"

Camera Dolly, gebruikt in de video van onze "Drone Haters"

Ooit wilt maken die Star Wars teksteffecten? De rock solid video, u zult zich herinneren, is omdat het model stationaire was, en de camera verplaatst. Wanneer u afspeelt, wordt het model te bewegen, vloeiend weergegeven. Een camera-dolly kan worden g
Quad Track Arduino Robot

Quad Track Arduino Robot

Deze build begon toen ik moest uitvoeren wat draadjes in het plafond van mijn afgewerkte kelder en had geen manier om er in te krijgen. Dus ik dacht dat ik zou gewoon bouwen van een robot die de draden voor mij trekken kon. En ik weet zeker dat ik ko
De BoBoBoT 5MP 1080 HD SECURITY Camera Raspberry Pi Veiligheidsraad Robot

De BoBoBoT 5MP 1080 HD SECURITY Camera Raspberry Pi Veiligheidsraad Robot

5 Mega Pixel 1080 HD Camera Module met nachtzicht NOIRMotion Capture technologieMotion Capture E-mail AlertsLive Web Feed horloge van uw smart phoneSD-kaart DVRRaspberry Pi GPIO pinnenLED 'sWiFiBluetooth5V DC Lithium-ionenbatterij aangedreven5V DC US
Arduino 2 As Time Lapse Dolly

Arduino 2 As Time Lapse Dolly

It's about time ik het internet mijn tijd vervallen dolly liet.  Dit is ten minste iteratie 4 of 5, het combineren van een lineaire beweging rig met een panning tuig, dus helaas heb ik niet een stap voor stap bouwproces.  Maar als uw als me een foto
Blinky papier Robot - 1e papier Circuit Project

Blinky papier Robot - 1e papier Circuit Project

Deze leuke kleine project is een snelle, goedkope Inleiding tot papier circuits. Het maakt ook gebruik van sturdy zelf permanent papier mensen van mijn vorige ' ible (Blinky is een gelukkige kleine robot met een vrolijke rood licht op zijn hoofd. Het
SADbot: de seizoensinvloeden getroffen tekening robot

SADbot: de seizoensinvloeden getroffen tekening robot

SADbot werd gemaakt in samenwerking met Ben Leduc-molens voor de galerie met venster op de Eyebeam Art + Technology Center. Het belangrijkste idee was om het gebruik van zonne-energie voor het aandrijven van een tekening machine die kan communiceren
Robot Heartbeat Valentine Card

Robot Heartbeat Valentine Card

Deze leuke Valentijn kaart maakt gebruik van Chibitronics circuit stickers een schattig robot tot leven te brengen.Voor deze kaart u hebt nodig:Letter formaat vel karton (8.5 "x 11")Grijze cardstockRoze en wit papier3 Chibitronics LED stickersCh
Verbeterde Spider Robot

Verbeterde Spider Robot

Ik ben altijd op zoek naar een nieuw project te doen op mijn robotica workshop voor kinderen. Terwijl spider robots intrigerend zijn, bijna alle van hen zijn ofwel te ingewikkeld waarbij 10 + servo's of manier over begroting voor mijn atelier. In de