SADbot: de seizoensinvloeden getroffen tekening robot (11 / 11 stap)

Stap 11: Maakt het interessant


Nu let's make SADbot tekenen iets interessants. Knip twee ongeveer 5
ft lengtes van visserij lijn en bind elk op door het gat in het midden van de
katrollen. Tie van de andere uiteinden van de lijn aan een voorjaar-klem en klem op een
marker. Monteer het Witboek op uw canvas bord met tape of klemmen.

Laten we zeggen de stappenmotoren tekenen in willekeurige richtingen standaard en vervolgens
om zich te gedragen als ze deden vóór wanneer iemand een fotocel bedekt. Dit zal
Maak een tekening zoals die SADbot in de Eyebeam venster galerij gemaakt.   Geniet van! Spelen met de fotocellen, zodat u kunt met SADbot communiceren en interessante tekeningen maken.

/*
SADbot v.03
SADbot zal het trekken van een willekeurige afstand in willekeurige richting tot een
fotocel wordt geblokkeerd. Wanneer SADbot een fotocel is geblokkeerd detecteert, het
naar toe zal trekken. Stappenmotoren zijn gedreven door van Sparkfun
EasyDriver v4.3
CC-GNU GPL door Ben Leduc-molens en Dustyn Roberts
Gemaakt: 2010.06
*/

#include //import stepper bibliotheek
#define stappen 200 / / 360/1.8 (stap hoek) = 200 stappen/revolutie
nieuwe stepper objecten uit stepper-bibliotheek (één per motor) declareren
Stepper right_motor (stappen 6, 7); 6 = DIR, 7 = STAP
Stepper left_motor (stappen, 11, 12); 11 = DIR, 12 = STAP
int afstand; Hoe ver de motoren moeten gaan
int laagste; laagste fotocel waarde op te slaan
int i; voor de looping

variabelen voor 4 fotocellen
int photo_up;
int photo_down;
int photo_left;
int photo_right;

Canvasgrootte instellen 1000 stappen is ongeveer.4 inch
#define CANVASWIDTH 32000
#define CANVASHEIGHT 20000

totale afstand voor grenzen controleren
SADbot begint bij center (canvaswidth/2 en canvasheight/2)
zweven totalWidth = CANVASWIDTH /2;
zweven totalHeight = CANVASHEIGHT /2;
int randomDirection;
int randomDistance;

VOID Setup {}
Serial.begin(9600); seriële afdruk te beginnen zodat we kunnen dingen zien
instellenin motor snelheid (RPM)
right_motor.setSpeed(200);
left_motor.setSpeed(200);
willekeurige zaad gebruiken om beter willekeurige getallen
* ingesteld op een analoge pin die u niet gebruikt
randomSeed(analogRead(4));
} / / einde van setup

void loop {}
lezen en afdrukken van alle sensor-waardes van analoge pins 0-3
photo_up = analogRead(0);
Serial.Print("up");
Serial.println(photo_up);

photo_down = analogRead(1);
Serial.Print("down");
Serial.println(photo_down);

photo_left = analogRead(2);
Serial.Print("left");
Serial.println(photo_left);

photo_right = analogRead(3);
Serial.Print("right");
Serial.println(photo_right);

delay(1000); Geef me tijd om ze te lezen in de monitor

Controleer vóór de tekening, onze totalHeight en totalWidth
Serial.Print("totalHeight:");
Serial.println(totalHeight);
Serial.Print("totaWidth:");
Serial.println(totalWidth);
delay(1000); Geef me tijd om ze te lezen in de monitor

fotocel waarden opslaan in een array
int photoValues [] = {photo_up, photo_down, photo_left, photo_right};
laagste = 9999; Dit hoger ingesteld dan mogelijk fotocel waarden
lus te vinden van de laagste waarde van de fotocel

voor (ik = 0; ik < 4; i ++) //4 = aantal sensoren
{
Serial.println(photoValues[i]); Print photoValue matrix
werkelijke fotocel waarde aan "laagste" variabele toewijzen als het lager
dan wat "laagste" is ingesteld op (begint bij 9999)
Als (laagste > = photoValues [i]) {}
laagste = photoValues [i];
}
uitprinten om te bevestigen dat de laagste waarde wordt geselecteerd
Serial.Print("lowest:");
Serial.println(lowest);
delay(1000); Wacht één seconde voordat het zodat kunnen wij het lezen van de waarden in een lus
} //end voor

afstand = laagste; instellen van de reisafstand = laagste waarde

als laagste waarde geeft aan een overdekt fotocel, trekken naar laagste
deze drempel afhankelijk van verlichting wijzigen
Als (laagste < 550)
{
vinden van de sensor die overeenkomt met de laagste, gaan die richting,
maar alleen als SADbot binnen de grenzen van het canvas
Als ((laagste == photoValues[0]) & & ((totalHeight + distance) <
CANVASHEIGHT))
{
omhoog (afstand);
totalHeight += afstand; Increment totalHeight variabele
}
anders als ((laagste == photoValues[1]) & & ((totalHeight-distance) > 0))
{
neer (afstand);
totalHeight-= afstand; decrement totalHeight variabele
}
anders als ((laagste == photoValues[2]) & & ((totalWidth-distance) > 0))
{
links (afstand);
totalWidth-= afstand; decrement totalWidth variabele
}
anders als ((laagste == photoValues[3]) & & ((totalWidth + distance) <
CANVASWIDTH))
{
recht (afstand);
totalWidth += afstand; Increment totalWidth variabele
}
} //end als

anders, niemand is die betrekking hebben op alle sensoren, draw volgens willekeurige
anders
{
willekeurig getal 1 t/m 9 toewijzen aan richting kiezen
randomDirection = willekeurige (1, 9);
Serial.Print ("willekeurige richting:");
Serial.println(randomDirection);

Kies willekeurig getal 1 t/m 200 toewijzen aan afstand
randomDistance = willekeurige (1, 200);
Serial.Print ("willekeurige afstand:");
Serial.println(randomDistance);
aanwijzingen voor een randomDirection-waarde die wordt gegenereerd
schakelaar (randomDirection)
{
geval 1: //go omhoog
Als ((totalHeight + randomDistance) < CANVASHEIGHT)
{
up(randomDistance);
totalHeight += randomDistance;
}
breken;

geval 2: //go naar beneden
Als ((totalHeight-randomDistance) > 0)
{
Down(randomDistance);
totalHeight-= randomDistance;
}
breken;

Case 3: //go links
Als ((totalWidth-randomDistance) > 0)
{
Left(randomDistance);
totalWidth-= randomDistance;
}
breken;

geval 4: //go recht
Als ((totalWidth + randomDistance) < CANVASWIDTH)
{
Right(randomDistance);
totalWidth += randomDistance;
}
breken;

geval 5: //go rechtop
Als (((totalWidth + randomDistance) < CANVASWIDTH) & & ((totalHeight
+ randomDistance) < CANVASHEIGHT))
{
upRight(randomDistance);
totalWidth += randomDistance;
totalHeight += randomDistance;
}
breken;

kast 6: //go upLeft
Als (((totalWidth-randomDistance) > 0) & & ((totalHeight +
randomDistance) < CANVASHEIGHT))
{
upLeft(randomDistance);
totalWidth-= randomDistance;
totalHeight += randomDistance;
}
breken;

geval 7: //go regelrechte
Als (((totalWidth + randomDistance) < CANVASWIDTH) & & ((totalHeight-randomDistance) > 0))
{
downRight(randomDistance);
totalWidth += randomDistance;
totalHeight-= randomDistance;
}
breken;

geval 8: //go downLeft
Als (((totalWidth-randomDistance) > 0) & & ((totalHeight-randomDistance) > 0))
{
downLeft(randomDistance);
totalWidth-= randomDistance;
totalHeight-= randomDistance;
}
breken;

standaard: //just in geval
Left(0);
} //end schakelaar
} //end anders
} //end loop

/*
Hier zijn de directionele functies. Lus van grootte = afstand.
Positieve Stapnummers zijn met de klok mee, tegen de klok in negatieve
*/

ongeldig omhoog (int afstand)
{
voor (ik = 0; ik < afstand; i ++) {}
right_motor.Step(1);
left_motor.Step(-1);
}
}

VOID neer (int afstand)
{
voor (ik = 0; ik < afstand; i ++) {}
right_motor.Step(-1);
left_motor.Step(1);
}
}

VOID links (int afstand)
{
voor (ik = 0; ik < afstand; i ++) {}
right_motor.Step(-1);
left_motor.Step(-1);
}
}

void (int afstand) recht
{
voor (ik = 0; ik < afstand; i ++) {}
right_motor.Step(1);
left_motor.Step(1);
}
}

VOID rechtop (int afstand)
{
voor (ik = 0; ik < afstand; i ++) {}
right_motor.Step(2);
left_motor.Step(-.2);
}
}

VOID upLeft(int distance)
{
voor (ik = 0; ik < afstand; i ++) {}
right_motor.Step(.2);
left_motor.Step(-2);
}
}

VOID regelrechte (int afstand)
{
voor (ik = 0; ik < afstand; i ++) {}
right_motor.Step(-.2);
left_motor.Step(2);
}
}

VOID downLeft(int distance)
{
voor (ik = 0; ik < afstand; i ++) {}
right_motor.Step(-2);
left_motor.Step(.2);
}
}

Gerelateerde Artikelen

Met behulp van een Arduino tekening Robot met Code Tutorials uur

Met behulp van een Arduino tekening Robot met Code Tutorials uur

Ik heb een Arduino robot voor een workshop tekening om te helpen tiener meisjes krijgen interesse in de onderwerpen van de stam (zie). De robot is ontworpen met Turtle-stijl programmering opdrachten zoals forward(distance) en turn(angle) maken van in
Tekening Robot

Tekening Robot

Please vote voor tekening Robot op deze link.Thanx voorafVaststelling van mijn tekening onvermogen met mijn Robotica vaardigheden en mij resultaten waren niet zo slecht. Nu ik kan tenminste mijn zelf van vernedering opslaan in mijn tekening klasse.Di
Eenvoudige tekening Robot voor Kids

Eenvoudige tekening Robot voor Kids

Dit is een tekening robot of een Draw-Bot voor kinderen. Zijn makkelijk te maken en kunnen trekken willekeurige lijnen van verschillende kleur op een papier. Elke tekening is verschillend en uniek van andere als zijn willekeurig. Zo maken en genieten
Circuit van Scribe tekening Robot

Circuit van Scribe tekening Robot

Is het proces van het opstellen van schakelingen met geleidende inkt pennen te nauw gerelateerd aan handenarbeid voor u?Of wilt u gewoon om te zien een cool ding gebeuren?Dit kan de oplossing voor u zijn. Bij een van onze hackerspace februari bouwen
Technische tekening Robot

Technische tekening Robot

In dit project stellen wij een educatief robotic tekening systeem voor het leren doel. Onze systeem maakt gebruik van robot autonoom projectie van lijnen en alle engineering geometrie zoals kubus, driehoek, vierkant, veelhoek tekenen. Het bot is voll
Arduino tekening Robot

Arduino tekening Robot

Ik heb ontworpen dit project voor een 10-uur durende workshop voor ChickTech.org waarvan het doel is om teenage vrouwen kennismaken met onderwerpen van de stam. De doelen voor dit project waren:Gemakkelijk op te bouwen.Eenvoudig te programmeren.Deed
Low-Cost, Arduino-Compatible tekening Robot

Low-Cost, Arduino-Compatible tekening Robot

Ik heb ontworpen dit project voor een 10-uur durende workshop voor ChickTech.org waarvan het doel is om teenage vrouwen kennismaken met onderwerpen van de stam. De doelen voor dit project waren:Gemakkelijk op te bouwen.Eenvoudig te programmeren.Deed
$100 muurschildering tekening robot (ook werkt als een gigantische etsen-a-schets)

$100 muurschildering tekening robot (ook werkt als een gigantische etsen-a-schets)

Featured on Hack-a-dag!Wat ik leuk vindt aan robots is dat je iets dat maken kunt maakt van andere dingen.  Zo meta!  Het maakt gebruik van gcode trekken alle foto's die je wilt, of u kan het rond rijden zoals een etsen-a-schets.  U kunt deze robot t
Dronken tekening robot!

Dronken tekening robot!

Geïnspireerd door de zak dronken robot, ik wilde de robot een baan te doen. Heb ik besloten om te laten de dronken robot sommige tekeningen maken. Om uw eigen zult u het volgende nodig:materialen:3 vilt-tipped markeringeneen knop cell batterijSommige
Muur tekening robot - Open Source! (KeerBot.com)

Muur tekening robot - Open Source! (KeerBot.com)

KeerBot doel is het ontwikkelen van open hardware robot – een nieuwe!Niet meer regelmatig saai robot die over de grond rolt, maar een nieuwe robot die uit muren putten kan.De robot is opgehangen op twee draden met bekende eerste lengte, en het heeft
Tekening robot hoe maak je

Tekening robot hoe maak je

te maken van deze robot u moet:Stap 1: eerst u zal deel V en sluit hem aan op deel O met 2 delen van A en B (zie intro voor deel gids) en een deel R plaatsen en deel L op het einde van de motor.Stap 2: volgende Neem deel Q en schuif het door deel W m
Een tekening robot

Een tekening robot

ik heb gemaakt deze robot voor de robotwedstrijd (ik ben 14 dus ik voor de prijs van de rechters rekenen)
Blu ray gloed in de donkere afbeelding tekening robot

Blu ray gloed in de donkere afbeelding tekening robot

al deze dingen moet vrij eenvoudig voor de ervaren gebruiker.Stap 1, krijgen een pololu maestro board en twee servomotoren, lijm deze elkaar zodat een torentje.Stap 2, een 100mW blu-ray laser toevoegen aan het torentje en schilderen van een blad in g
Hoe maak je zelfgemaakte koekjes met tekening Robot

Hoe maak je zelfgemaakte koekjes met tekening Robot

Homemade cookie is één van de beste keuzes bij de voorbereiding van een feest of groot diner met vrienden of families. Creatieve cookies op basis van aangepaste vormen imponeren mensen veel meer. Echter ook al heb je de hoge kwaliteit pannenkoek mach