Sängkamrat Robot Bed (63 / 74 steg)

Steg 63: kod



Okej - så - när du arbetar med kod det är perfekt att använda något liknande Github att hålla reda på ändringar. Jag gör inte detta. Alltså skrev jag av misstag över den senaste fungerande versionen av koden. Jag har den senast sparade versionen, men jag är inte säker på hur komplett det är. Det är sannolikt lite buggig.

Novertheless, eftersom ingen av er kommer sannolikt att bygga det här någon som sätt, och sängen är för närvarande i bitar och inte fungerar, jag kommer bara att lägga upp vad jag har.

Jag delar också Provningsmetod för att manuellt kontrollera motorerna. Om du tittar på detta projekt för gränsyta en Arduino till mycket stora motorer via en Alltrax motor controller, kommer att här koden vara mer användbar för dig ändå.

Senast sparade versionen av Robot Bed Provningsmetod:

/*
Denna exempelkod är offentlig.

*/

upprätta spjäll pins
int leftThrottle = 3; LED är ansluten till digital pin 9
int rightThrottle = 5; LED är ansluten till digital pin 9

upprätta magnetventil pins
int leftOn = 7. LED är ansluten till digital pin 9
int rightOn = 8; LED är ansluten till digital pin 9

upprätta contactor pins
int leftReverse = 9;
int rightReverse = 10;

Körhastighet skickas till gasen
int gospeed = 86.

flyktiga int foserious = 0;

FRAMSIDAN
int FrontLeftSnd = 30.
int FrontLeftRcv = 31;

int FrontCenterSnd = 32.
int FrontCenterRcv = 33.

int FrontRightSnd = 34.
int FrontRightRcv = 35.

HÖGER SIDA
int Side1LeftSnd = 36.
int Side1LeftRcv = 37.

int Side1CenterSnd = 38.
int Side1CenterRcv = 39.

int Side1RightSnd = 40;
int Side1RightRcv = 41;

TILLBAKA
int BackLeftSnd = 42.
int BackLeftRcv = 43;

int BackCenterSnd = 44.
int BackCenterRcv = 45;

int BackRightSnd = 46.
int BackRightRcv = 47;

VÄNSTER SIDA
int Side2LeftSnd = 49.
int Side2LeftRcv = 48.

int Side2CenterSnd = 51.
int Side2CenterRcv = 50;

int Side2RightSnd = 53;
int Side2RightRcv = 52;

matris för alla inkommande och utgående stift namn. Senare brukade läsa alla sensorer i en for-loop.
int SensorOutputs [] = {FrontLeftSnd, FrontCenterSnd, FrontRightSnd, Side1LeftSnd, Side1CenterSnd, Side1RightSnd, BackLeftSnd, BackCenterSnd, BackRightSnd, Side2LeftSnd, Side2CenterSnd, Side2RightSnd};
int SensorInputs [] = {FrontLeftRcv, FrontCenterRcv, FrontRightRcv, Side1LeftRcv, Side1CenterRcv, Side1RightRcv, BackLeftRcv, BackCenterRcv, BackRightRcv, Side2LeftRcv, Side2CenterRcv, Side2RightRcv};

int dontgo = 0;

antalet totala sensorer
int SensorCount = 12;

int nothingHappening = 0;

int realCloseLike = 0;

int goingforward = 0;
int goingbackward = 0;
int goingright = 0;
int goingleft = 0;

int backhit = 0;
int fronthit = 0;
int righthit = 0;
int lefthit = 0;

int amountToMove = 1000;

int plockade;

void setup() {

(CLI); //stop avbrott

TCCR1A = 0; / / Ställ in hela TCCR1A register till 0
TCCR1B = 0; / / samma för TCCR1B
TCNT1 = 0; //initialize värde till 0
Set jämför match registrera för 1hz steg
OCR1A = 512; / / = (16 * 10 ^ 6) / (1 * 1024) - 1 (måste vara < 65536)
Aktivera CTC läge
TCCR1B | = (1 << WGM12);
Anger CS10 och CS12 bitar för 1024 prescaler
TCCR1B | = (1 << CS12) | (1 << CS10);
Aktivera timern jämför avbrott
TIMSK1 | = (1 << OCIE1A);

SEI (); //allow avbrott

Serial.BEGIN(9600);

pinMode (leftOn, produktionen);
pinMode (rightOn, produktionen);

pinMode (leftReverse, produktionen);
pinMode (rightReverse, produktionen);

Se till att strömmen är avstängd
digitalWrite (leftOn, låg);
digitalWrite (rightOn, låg);
digitalWrite (leftReverse, låg);
digitalWrite (rightReverse, låg);

stötfångare sensor stift
pinMode (18, ingång);
pinMode (19, ingång);

Ange avståndet sensor utgångsstift
pinMode (FrontLeftSnd, OUTPUT); stift 30
pinMode (FrontCenterSnd, OUTPUT); PIN 32
pinMode (FrontRightSnd, OUTPUT); PIN 34
pinMode (Side1LeftSnd, OUTPUT); PIN 36
pinMode (Side1CenterSnd, OUTPUT); PIN 38
pinMode (Side1RightSnd, OUTPUT); stift 40
pinMode (BackLeftSnd, OUTPUT); stift 42
pinMode (BackCenterSnd, OUTPUT); PIN 44
pinMode (BackRightSnd, OUTPUT); PIN 46
pinMode (Side2LeftSnd, OUTPUT); PIN 49
pinMode (Side2CenterSnd, OUTPUT); PIN 51
pinMode (Side2RightSnd, OUTPUT); PIN 53

Ange avståndet sensor input pins
pinMode (FrontLeftRcv, indata); stift 31
pinMode (FrontCenterRcv, indata); PIN 33
pinMode (FrontRightRcv, indata); PIN 35
pinMode (Side1LeftRcv, indata); stift 37
pinMode (Side1CenterRcv, indata); PIN-kod 39
pinMode (Side1RightRcv, indata); PIN 41
pinMode (BackLeftRcv, indata); stift 43
pinMode (BackCenterRcv, indata); PIN 45
pinMode (BackRightRcv, indata); PIN 47
pinMode (Side2LeftRcv, indata); PIN 48
pinMode (Side2CenterRcv, indata); PIN 50
pinMode (Side2RightRcv, indata); PIN 52

Och vänta en stund
Delay(3000);

}

void loop() {

lookAllAround();

moveRobot();
Delay(amountToMove);
slowstop();
Delay(1500);

}

ISR(TIMER1_COMPA_vect) {
Avbryta på freq 1 kHz att mäta reed switch / / genererar puls våg av frekvens 8kHz/2 = 4 kHz (tar två cykler för full wave-växla hög sedan växla låg)

om (lefthit == 0 & & righthit == 0 & & fronthit == 0 & & backhit == 0) {
IF(digitalRead(18) == hög) {
hardstop();
Serial.println(goingbackward);
Serial.println(goingforward);
Serial.println(goingleft);
Serial.println(goingright);

Serial.println ("FUCK YEAH!");
IF(goingright == 1) {
righthit = 1;
goingright = 0;
}
IF(goingleft == 1) {
lefthit = 1;
goingleft = 0;
}
IF(goingbackward == 1) {
backhit = 1;
goingbackward = 0;
}
IF(goingforward == 1) {
fronthit = 1;
goingforward = 0;
}
}

}

om (lefthit == 0 & & righthit == 0 & & fronthit == 0 & & backhit == 0) {
IF(digitalRead(19) == hög) {
hardstop();
Serial.println ("FUCK NO!");
Serial.println(goingbackward);
Serial.println(goingforward);
Serial.println(goingleft);
Serial.println(goingright);

IF(goingbackward == 1) {
backhit = 1;
goingbackward = 0;
}
IF(goingforward == 1) {
fronthit = 1;
goingforward = 0;
}
IF(goingright == 1) {
righthit = 1;
goingright = 0;
}
IF(goingleft == 1) {
lefthit = 1;
goingleft = 0;
}
}
}

}

void moveRobot() {

först se om hit--om hit medan du flyttar i någon av riktningarna - auto-pick åt andra hållet
--annars plocka slumpmässigt
IF(backhit == 1) {
amountToMove = 1000;

backhit = 0;
fronthit = 0;
lefthit = 0;
righthit = 0;
plockade = 0;
}
annat if(fronthit == 1) {
amountToMove = 1000;

backhit = 0;
fronthit = 0;
lefthit = 0;
righthit = 0; plockade = 1;
}
annat if(lefthit == 1) {
amountToMove = 500.

backhit = 0;
fronthit = 0;
lefthit = 0;
righthit = 0;
plockade = 2;
}
annat if(righthit == 1) {
amountToMove = 500.

backhit = 0;
fronthit = 0;
lefthit = 0;
righthit = 0;
plockade = 3;
}
annat {
plockade = random(3);
Serial.println("WTF!?");
amountToMove = 1000;
}

Switch(Picked) {
fall 0:
goingforward = 1;
goingbackward = 0;
goingright = 0;
goingleft = 0;
forwards();
Serial.println ("gå framlänges");

bryta;
fall 1:
goingforward = 0;
goingbackward = 1;
goingright = 0;
goingleft = 0;
Backwards();
Serial.println ("gå tillbaka");

bryta;
fall 2:
goingforward = 0;
goingbackward = 0;
goingright = 1;
goingleft = 0;
Right();
Serial.println ("go rätt");

bryta;
fall 3:
goingforward = 0;
goingbackward = 0;
goingright = 0;
goingleft = 1;
Left();
Serial.println ("gå kvar");

bryta;
}

Delay(1); dröjsmål i mellan läser för stabilitet

}

void forwards() {

Aktivera den omvända contactoren
digitalWrite (leftReverse, hög);
Delay(50);
digitalWrite (rightReverse, hög);

Delay(100);

Aktivera solenoider
digitalWrite (leftOn, hög);
digitalWrite (rightOn, hög);

ta ett andetag
Delay(500);

engagera spjäll
analogWrite (rightThrottle, gospeed);
analogWrite (leftThrottle, gospeed);

}

void backwards() {

Aktivera solenoider
digitalWrite (leftOn, hög);
digitalWrite (rightOn, hög);

ta ett andetag
Delay(500);

engagera spjäll
analogWrite (rightThrottle, gospeed);
analogWrite (leftThrottle, gospeed);

}

void right() {

IF(dontgo == 0) {
Aktivera solenoider
digitalWrite (leftOn, hög);
digitalWrite (rightOn, hög);

Aktivera den omvända contactoren
digitalWrite (rightReverse, hög);

ta ett andetag
Delay(500);

engagera spjäll
analogWrite (rightThrottle, gospeed);
analogWrite (leftThrottle, gospeed);
}

återställa variabeln
dontgo = 0;

}

void left() {

IF(dontgo == 0) {
Aktivera solenoider
digitalWrite (leftOn, hög);
digitalWrite (rightOn, hög);

Aktivera den omvända contactoren
digitalWrite (leftReverse, hög);

ta ett andetag
Delay(500);

engagera spjäll
analogWrite (rightThrottle, gospeed);
analogWrite (leftThrottle, gospeed);
}

återställa variabeln
dontgo = 0;

}

void slowstop()
{

för (int fadeValue = gospeed; fadeValue > = 0; fadeValue-=5) {
anger värdet (varierar från 0 till 255):
analogWrite (rightThrottle, fadeValue);
analogWrite (leftThrottle, fadeValue);
vänta 30 millisekunder att se ljusreglering effekten
Delay(500);
}

digitalWrite (leftOn, låg);
digitalWrite (rightOn, låg);
digitalWrite (leftReverse, låg);
digitalWrite (rightReverse, låg);

int goingforward = 0;
int goingbackward = 0;
int goingright = 0;
int goingleft = 0;

Delay(2000);
lookAllAround();
Delay(1000);

}

void hardstop()
{

för (int fadeValue = gospeed; fadeValue > = 0; fadeValue-=5) {
anger värdet (varierar från 0 till 255):
analogWrite (rightThrottle, fadeValue);
analogWrite (leftThrottle, fadeValue);
vänta 30 millisekunder att se ljusreglering effekten
altDelay(50);
}

digitalWrite (leftOn, låg);
digitalWrite (rightOn, låg);
digitalWrite (leftReverse, låg);
digitalWrite (rightReverse, låg);
}

void altDelay(int x) {
för (unsigned int jag = 0; jag < = x; i ++)
{
delayMicroseconds(1000);
}
}

void lookAllAround() {

lång varaktighet, tum, cm;

för (int thisPin = 0; thisPin < 1; thisPin ++) {

digitalWrite (SensorOutputs [thisPin], låg);
delayMicroseconds(2);
digitalWrite (SensorOutputs [thisPin], hög);
delayMicroseconds(12);
digitalWrite (SensorOutputs [thisPin], låg);

längd = pulseIn (SensorInputs [thisPin], hög);
digitalWrite (SensorOutputs [thisPin], låg);

konvertera tiden till ett avstånd
tum = microsecondsToInches(duration);

Serial.Print(SensorOutputs[thisPin]);
Serial.Print(":");
Serial.Print(inches);
Serial.println ("in");

//check och kontrollera igen
om (inches > 10 & & inches < 25) {
realCloseLike = 0;
för (int checkagain = 0; checkagain < 3; checkagain ++) {
Delay(100);
digitalWrite (SensorOutputs [thisPin], låg);
delayMicroseconds(2);
digitalWrite (SensorOutputs [thisPin], hög);
delayMicroseconds(12);
digitalWrite (SensorOutputs [thisPin], låg);
//
längd = pulseIn (SensorInputs [thisPin], hög);
tum = microsecondsToInches(duration);
digitalWrite (SensorOutputs [thisPin], låg);
//
Delay(100);
//
om (inches > 10 & & inches < 25) {
//
Serial.Print(SensorOutputs[thisPin]);
Serial.Print(":");
Serial.Print(inches);
Serial.println ("in");
//
realCloseLike = realCloseLike + 1.
//
om (realCloseLike > 2) {
dontgo = 1;
// }
// }
// }
// }

Tar ca 1/2 sekund för att kontrollera alla sensorerna @ 50uS
Delay(100);

}
}

lång microsecondsToInches(long microseconds)
{
Enligt Parallaxs datablad för PING))), det finns
73.746 mikrosekunder per tum (dvs. ljud resor på 1130 fot per
det andra). Detta ger vägsträcka som ping, utgående
och tillbaka, så vi delar med 2 att få distansera av hindret.
Se: < en href = "http://www.parallax.com/dl/docs/prod/acc/28015-PING-v1.3.pdf" >< en href = "http://www.parallax.com/dl/docs/prod/acc/28015-PI... < / a" > http://www.parallax.com/dl/docs/prod/acc/28015-PI...</a>>
återvända mikrosekunder / 74 / 2;
}

Motorisk kontroll test kodexempel:

/*
Denna exempelkod är offentlig.

*/

upprätta spjäll pins
int leftThrottle = 3; LED är ansluten till digital pin 9
int rightThrottle = 5; LED är ansluten till digital pin 9

upprätta magnetventil pins
int leftOn = 7. LED är ansluten till digital pin 9
int rightOn = 8; LED är ansluten till digital pin 9

upprätta contactor pins
int leftReverse = 9;
int rightReverse = 10;

Körhastighet skickas till gasen
int gospeed = 82.

int nothingHappening = 0;

int realCloseLike = 0;

int goingforward = 0;
int goingbackward = 0;
int goingright = 0;
int goingleft = 0;

int backhit = 0;
int fronthit = 0;
int righthit = 0;
int lefthit = 0;

int amountToMove = 1000;

int timeToWait = 30000;

int plockade;

void setup() {

(CLI); //stop avbrott

TCCR1A = 0; / / Ställ in hela TCCR1A register till 0
TCCR1B = 0; / / samma för TCCR1B
TCNT1 = 0; //initialize värde till 0
Set jämför match registrera för 1hz steg
OCR1A = 512; / / = (16 * 10 ^ 6) / (1 * 1024) - 1 (måste vara < 65536)
Aktivera CTC läge
TCCR1B | = (1 << WGM12);
Anger CS10 och CS12 bitar för 1024 prescaler
TCCR1B | = (1 << CS12) | (1 << CS10);
Aktivera timern jämför avbrott
TIMSK1 | = (1 << OCIE1A);

SEI (); //allow avbrott

Serial.BEGIN(9600);

pinMode (leftOn, produktionen);
pinMode (rightOn, produktionen);

pinMode (leftReverse, produktionen);
pinMode (rightReverse, produktionen);

Se till att strömmen är avstängd
digitalWrite (leftOn, låg);
digitalWrite (rightOn, låg);
digitalWrite (leftReverse, låg);
digitalWrite (rightReverse, låg);

stötfångare sensor stift
pinMode (18, ingång);
pinMode (19, ingång);

Och vänta en stund
Delay(3000);

}

void loop() {

Left();
Delay(amountToMove);
slowstop();
Delay(timeToWait);

Backwards();
Delay(amountToMove);
slowstop();
Delay(timeToWait);

forwards();
Delay(amountToMove);
slowstop();
Delay(timeToWait);

Right();
Delay(amountToMove);
slowstop();
Delay(timeToWait);

///

Right();
Delay(amountToMove);
slowstop();
Delay(timeToWait);

forwards();
Delay(amountToMove);
slowstop();
Delay(timeToWait);

Backwards();
Delay(amountToMove);
slowstop();
Delay(timeToWait);

Left();
Delay(amountToMove);
slowstop();
Delay(timeToWait);

///

forwards();
Delay(amountToMove);
slowstop();
Delay(timeToWait);

Backwards();
Delay(amountToMove);
slowstop();
Delay(timeToWait);

forwards();
Delay(amountToMove);
slowstop();
Delay(timeToWait);

Backwards();
Delay(amountToMove);
slowstop();
Delay(timeToWait);

}

ISR(TIMER1_COMPA_vect) {
Avbryta på freq 1 kHz att mäta reed switch / / genererar puls våg av frekvens 8kHz/2 = 4 kHz (tar två cykler för full wave-växla hög sedan växla låg)

om (lefthit == 0 & & righthit == 0 & & fronthit == 0 & & backhit == 0) {
IF(digitalRead(18) == hög) {
hardstop();

Serial.println(goingbackward);
Serial.println(goingforward);
Serial.println(goingleft);
Serial.println(goingright);
Serial.println ("FUCK YEAH!");

IF(goingright == 1) {
righthit = 1;
goingright = 0;
}
IF(goingleft == 1) {
lefthit = 1;
goingleft = 0;
}
IF(goingbackward == 1) {
backhit = 1;
goingbackward = 0;
}
IF(goingforward == 1) {
fronthit = 1;
goingforward = 0;
}
}

}

om (lefthit == 0 & & righthit == 0 & & fronthit == 0 & & backhit == 0) {
IF(digitalRead(19) == hög) {
hardstop();

Serial.println(goingbackward);
Serial.println(goingforward);
Serial.println(goingleft);
Serial.println(goingright);
Serial.println ("FUCK NO!");

IF(goingbackward == 1) {
backhit = 1;
goingbackward = 0;
}
IF(goingforward == 1) {
fronthit = 1;
goingforward = 0;
}
IF(goingright == 1) {
righthit = 1;
goingright = 0;
}
IF(goingleft == 1) {
lefthit = 1;
goingleft = 0;
}
}
}

}

void moveRobot() {

först se om hit--om hit medan du flyttar i någon av riktningarna - auto-pick åt andra hållet
--annars plocka slumpmässigt
IF(backhit == 1) {
amountToMove = 1000;

backhit = 0;
fronthit = 0;
lefthit = 0;
righthit = 0;
plockade = 0;
}
annat if(fronthit == 1) {
amountToMove = 1000;

backhit = 0;
fronthit = 0;
lefthit = 0;
righthit = 0; plockade = 1;
}
annat if(lefthit == 1) {
amountToMove = 500.

backhit = 0;
fronthit = 0;
lefthit = 0;
righthit = 0;
plockade = 2;
}
annat if(righthit == 1) {
amountToMove = 500.

backhit = 0;
fronthit = 0;
lefthit = 0;
righthit = 0;
plockade = 3;
}
annat {
plockade = random(3);
Serial.println("WTF!?");
amountToMove = 1000;
}

Switch(Picked) {
fall 0:
goingforward = 1;
goingbackward = 0;
goingright = 0;
goingleft = 0;
forwards();
Serial.println ("gå framlänges");

bryta;
fall 1:
goingforward = 0;
goingbackward = 1;
goingright = 0;
goingleft = 0;
Backwards();
Serial.println ("gå tillbaka");

bryta;
fall 2:
goingforward = 0;
goingbackward = 0;
goingright = 1;
goingleft = 0;
Right();
Serial.println ("go rätt");

bryta;
fall 3:
goingforward = 0;
goingbackward = 0;
goingright = 0;
goingleft = 1;
Left();
Serial.println ("gå kvar");

bryta;
}

Delay(1); dröjsmål i mellan läser för stabilitet

}

void forwards() {

Aktivera den omvända contactoren
digitalWrite (leftReverse, hög);
Delay(50);
digitalWrite (rightReverse, hög);

Delay(100);

Aktivera solenoider
digitalWrite (leftOn, hög);
digitalWrite (rightOn, hög);

ta ett andetag
Delay(500);

engagera spjäll
analogWrite (rightThrottle, gospeed);
analogWrite (leftThrottle, gospeed);

}

void backwards() {

Aktivera solenoider
digitalWrite (leftOn, hög);
digitalWrite (rightOn, hög);

ta ett andetag
Delay(500);

engagera spjäll
analogWrite (rightThrottle, gospeed);
analogWrite (leftThrottle, gospeed);

}

void right() {

Aktivera solenoider
digitalWrite (leftOn, hög);
digitalWrite (rightOn, hög);

Aktivera den omvända contactoren
digitalWrite (rightReverse, hög);

ta ett andetag
Delay(500);

engagera spjäll
analogWrite (rightThrottle, gospeed);
analogWrite (leftThrottle, gospeed);

}

void left() {

Aktivera solenoider
digitalWrite (leftOn, hög);
digitalWrite (rightOn, hög);

Aktivera den omvända contactoren
digitalWrite (leftReverse, hög);

ta ett andetag
Delay(500);

engagera spjäll
analogWrite (rightThrottle, gospeed);
analogWrite (leftThrottle, gospeed);

}

void slowstop()
{

för (int fadeValue = gospeed; fadeValue > = 0; fadeValue-=5) {
anger värdet (varierar från 0 till 255):
analogWrite (rightThrottle, fadeValue);
analogWrite (leftThrottle, fadeValue);
vänta 30 millisekunder att se ljusreglering effekten
Delay(500);
}

digitalWrite (leftOn, låg);
digitalWrite (rightOn, låg);
digitalWrite (leftReverse, låg);
digitalWrite (rightReverse, låg);

int goingforward = 0;
int goingbackward = 0;
int goingright = 0;
int goingleft = 0;

}

void hardstop()
{

för (int fadeValue = gospeed; fadeValue > = 0; fadeValue-=5) {
anger värdet (varierar från 0 till 255):
analogWrite (rightThrottle, fadeValue);
analogWrite (leftThrottle, fadeValue);
vänta 30 millisekunder att se ljusreglering effekten
altDelay(50);
}

digitalWrite (leftOn, låg);
digitalWrite (rightOn, låg);
digitalWrite (leftReverse, låg);
digitalWrite (rightReverse, låg);
}

void altDelay(int x) {
för (unsigned int jag = 0; jag < = x; i ++)
{
delayMicroseconds(1000);
}
}

Se Steg
Relaterade Ämnen

Barn Robot Bed

asymmetriska Robot säng för barn från 2 ark av plywood och hand verktyg. Jag kände min son var för ung och kan vara rädd för att sova på en robot så, detta exempel saknar färgglada, målade robotic detaljer jag hade föreställt mig. Sänggaveln har en t...

Random sorteringsordningar

Att göra sängkamrat, omvandlas jag i princip min personliga säng till en autonom själv köra elbil. Låt inte dess möbler-ness lura dig. Det finns lite umph bakom detta. Sängen kan köra med en ihållande 8 HÄSTKRAFTER av kraft och kan topp upp till 25 h...

AAA Robot (autonoma Analog Arduino)

The AAA Robot är en perfekt robot för nybörjare. Den är mångsidig, lätt att bygga, och diskuterar många av de ämnen som roboticists behöver lära sig, inklusive men inte begränsat till transistor switchar, motor kör nad analoga sensorer. Detta Instruc...

Robot Heartbeat Valentine kort

Detta roliga alla hjärtans-kort använder Chibitronics krets klistermärken för att levandegöra en bedårande robot.För detta kort behöver du:A4 storlek ark papper (8,5 "x 11")Grå cardstockRosa och vita papper3 Chibitronics LED klistermärkenChibitr...

Linjen följa robot, ingen programmering krävs

detta är den linje efter robot som jag konstruerat och byggt en NCEA elektronisk design bedömning. Idén kom till mig när du spelar runt med ljus beroende motstånd (LDR'S), att inse att varvtal kan varieras när wired i serie med LDR och en transistor....

Robot nattlampa med två ansikten

jag hade en gammal pc liggande--en att jag inte kunde få arbeta på grund av min okunskap eller lättja. Så jag demonterade det och använde dess delar för att skapa en natt ljus robot. Nattlampan lades verkligen för att ge det mer av en visuell effekt...

Hur till retur Instructables och RoboGames Robot tävling

robotar är aldrig kommer för att ta över världen om vi inte gå av i soffan och göra dem själva!Det är därför vi har slagit sig ihop med folk påRoboGames att ge dig Robot tävling!Vill du vinna en resa till RoboGames 2009? Berätta hur du gjorde din rob...

DISCOBOT: Dans, Robot stil!

Det hela började när jag gick för att se Star Wars: The Force vaknar och blev omedelbart förälskad i BB-8. Jag bestämde mig, just då och där, att jag ville göra en robot som människor skulle falla i kärlek med.OCH SÅ... DISCOBOT föddes! DISCOBOT är e...

Fönstret måleri Robot (arduino, bearbetning, accelerometer)

idén till projektet kom från en av mina favorit "ibles: polargraph. Jag älskade ritformat och tänkte hur coolt det vore att göra detta på sidan av en byggnad? Tyvärr utmaningarna till att inrätta en sådan stor polargraph på en student budget drivit m...

EMS diagnostiska Robot med BPM

I vissa situationer kan första responders en nödsituation inte nå potentiella offer på grund av riskfyllda förhållanden. Till exempel första responders till ett hus går inte att ange hem men kommer fortfarande vill utvärdera situationen i fråga om po...

Hur till spår din Robot med OpenCV

UPPDATERING: Låter göra robotar, mitt hem digital hackerspace, köptes av RobotShop. Jag vill inte gå in, men de nya ägarna förbjudit mig själv och de flesta veteran medlemmarna. Som sagt, de flesta av länkarna där kommer att brytas. Lyckligtvis kunde...

Maddie fotoniska Robot kackerlackan: en solar driv Madagaskar kackerlacka som kör snabbare än din katt

Oh Solar Pocket fabriken fans. Hur du har spelat rätt in i våra händer. Åh är ironiska läckra! Så ironiskt. Vi gjorde du tror vi försöker förändra världen med billiga microsolar paneler tillverkade lokalt.HAHAHA. Som skulle göra det?!Åh är du så dum....

Vägen efter Robot "Tweety BOT"

Tweety Bot är helt enkelt en avancerad version av en rad efterföljare Robot. Den består av två storakomponenter:(1) hårdvara (inkluderar de sensorer och drivande mekanismer)(2) programvara (sökvägen efter och rutnät lösa algoritm)Hårdvara för Tweety...

Spåras Arduino Robot

Detta Instructable visar dig hur man bygger en spårad Arduino styrd robot.Innehållet är organiserade enligt följande:Sourcing delar: Har alla nödvändiga delar sammanställts och resurser att granska deras specifikationer och länkar till där delarna ka...

LEGO fyrfotingen Robot

Visa på robot släpvagn video här eller se robotarna fullständiga video från min webbplats i avsnittet robot, källkoden finns även i det här avsnittet.http://www.itsalmostgenius.comEfter att ha avslutat en enkel baserade Arduino bil inom veckor var de...

BUGBot - ljus efterföljare Robot

siffrorna ovan visar den grundläggande idén om en robot, där vi har några ingångar och utdataenheter ansluten till hjärnan och vissa utgångar styrs av hjärnan. I vårt fall har vi Arduino som hjärnan.Centrala hjärnan, styr alla rörelser av roboten. Se...

Hur man gör en Bionic skalbagge Robot

Jag var försökande till design en Bo-robot baserad på miniQ plattform. Tack vare den 3D utskriva tekniken, kan jag skriva ut ett bionic fall av hög kvalitet och lätthet i en låg kostnad.Steg 1: Material & verktygför det fullständiga materialetSteg 2:...

PulleyBot: En remskiva Driven Robot

PulleyBot är en enkel, enhetlig manöverdonet 3D tryckta leksak med en växellåda som helt består av trissa system. Detta instructable är en handledning om hur man monterar PulleyBot, men om du är intresserad av remskiva, kabel och kedjan mekanismer, d...

Instructables Robot klockan

Detta är en awesome Instructables Robot klockan som är perfekt för alla skrivbord, natt stannande, fönsterbrädan, Soffbord, etc... Den är liten och trådlösa, vilket gör det perfekt för resor. Att aktivera det bara trycka roboten och titta på honom ly...