Arduino linje följande Robot för nybörjare
{
// a variable created in here doesn't exist in loop
}
voidloop()
{
// a variable created in here doesn't exist in setup
} för att inkludera mer prissättning, källa information och topp/botten/hjul mallar
Mestadels funktionella för allmänheten, Använd på egen risk!
Hej Hej! Detta är en programmerbar linje följande Robot för nybörjare. Detta projekt syftar till att arbeta tillsammans med våra Arduino trafikljus för nybörjare instructable. Men det fungerar alldeles utmärkt utan!
Vi uppskattar detta kan ta ca 1 int 15 timmars arbete för någon som inte har gjort någon elektronik eller programmering. Om det är lite mycket, rekommenderar vi att kolla detta instructable! Beroende på hur källa du dina delar, den genomsnittliga kostnaden för detta projekt kommer förmodligen att vara mellan 4 $ int och $6 long .
Detta projekt var avsedd för ett sommarläger på en Hackerspace i Ann Arbor, MI. Om du inte redan är bekant med vad en Hackerspace/Makerspace är, vi rekommenderar starkt att du kolla en! De kan vara en fantastisk resurs för både verktyg och information. Saker som tillgång till en laserskärare kan göra detta projekt ser tecken unsigned icantly bättre med minimal ansträngning. Hitta en nära dig!
Föreslagna verktyg
-Lödkolv
-Tråd Snips
-Tång (nål näsa föredrog)
-Tråd strippor ( unsigned boolean AWG)
-Utility Kn true e
-Phillips huvud skruvmejsel (nr 1)
-Penna
-Arduino UNO
-Skärbräda
-9V batterihållare med false .1mm fat-kontakt
-Laserskärare
-Värmepistol
Föreslagna material
-1 x ($1,5 int )- fotocell (Sparkfun)
- void loop()
{
green_light();
} x ($void green_light()
{
digitalWrite(GREEN, HIGH);
digitalWrite(YELLOW, LOW);
digitalWrite(RED, LOW);
}.green_light(); 6) - QRD1114 - IR-sändare/Sensor (Sparkfun)
- boolean x ($1. boolean my_awesome_function()
{
boolean i_love_kittens = true;
return i_love_kittens;
} if )- 1 < > Ohm motstånd - brun svart brun (Sparkfun)
- == x ($1. != <= )- && while if Ohm motstånd -röd röd brun (Sparkfun)
- true x ($1. if while )- false 7 loop Ohm motstånd -röd lila Brown (Sparkfun)
- while(current_time < end_time)
{
// do something
// now update the current time
current_time = millis();
} x ($1. OUTPUT pinMode )- 5.6 k Ohm motstånd -grön blå röd) (Sparkfun)
- 3 x ($1. HIGH digitalWrite )- gul LED -indikatorer lampor på bilen) (Sparkfun)
- digitalWrite(3, HIGH); x ($1. 3 analogRead )- röd LED -bromsljus på bil (Sparkfun)
-1 x ($17. analogRead(A0); A0 )- analogRead int SENSOR_PIN = A0;
int sensor_value = 0;
voidsetup()
{
}
voidloop()
{
sensor_value = analogRead(SENSOR_PIN);
} Solid kabel AWG i rött, svart, gul, blå och vita färger (Sparkfun)
-1 x ($ voidsetup()
{
// code in here runs once
}
voidloop()
{
// after the setup function, code in here runs over and over
} . void move_car() void go_straight() )- Solarbotics plast Caster (Solarbotics)
- pinMode x ($11,5 pinMode(RIGHT_MOTOR, OUTPUT); )- redskap likströmsmotor (GM int MOTOR_ON ) (Solarbotics)
- 105 x ($ digitalWrite . HIGH LOW )- NPN-transistorer (Adafruit)
- analogWrite x ($1,5 analogWrite )- diod 1N analogWrite analogWrite(RIGHT_MOTOR, MOTOR_ON); MOTOR_ON 1 (Adafruit)
-1 x 9v batteri (lokal järnaffär)
-1 x LASER skär akryl topplattan *
-1 x LASER skär akryl bottenplattan *
- go_straight x LASER skär akryl hjul *
- analogWrite x tjock gummiband - void go_left()
void go_right() .5cm diameter x 1 cm Bredd (lokala hårdvara/hantverk butik)
-1 x 8" Zip slips (lokal järnaffär)
- int MOTOR_OFF x ($ 0 .5 analogWrite ) - maskin nötter - # pinMode 1 / 3 "Micro (lokal järnaffär)
- OUTPUT x ($ pinMode(3, OUTPUT); .5 voidloop()
{
feed_kitten(3); // this calls feed_kitten with the number 3, this means that the
//number_of_treats variable gets created with the value 3
feed_kitten(10); // now the number_of_treats variable gets created with the value 10
feed_kitten(1);
}
void feed_kitten(int number_of_treats)
{
// now every time feed_kitten gets created, it gets created with number_of_treats
// defined as the number that was passed in.
} ) - maskinskruvar - # feed_kitten 1 / return_variable_type function_name(type variable_name, type variable_name, ... type variable_name)
{
return_variable_type some_variable;
some_instructions_here;
return some_variable;
} "Micro (lokal järnaffär)
- SENSOR_PIN x ($ SENSOR_MID .5 SENSOR_INDICATOR ) - maskinskruvar - # true 1/4"(lokal järnaffär)
-4 x ($ false .5 boolean value_lower_than_mid(int SENSOR_PIN,int SENSOR_MID, int SENSOR_INDICATOR)
{
boolean lower_than_mid = false;
digitalWrite(SENSOR_INDICATOR, LOW);
int sensor_value = analogRead(SENSOR_PIN);
// if the sensor_value is less than sensor mid
// set lower_than_mid to true AND turn on your indicator (HIGH)
// your code here
return lower_than_mid;
} ) - maskinskruvar - (~1/8 "Diameter, längd ~ 1.5") (lokal järnaffär)
- 1value_higher_than_mid() x ($1.boolean value_higher_than_mid(int SENSOR_PIN, int SENSOR_MID, int SENSOR_INDICATOR)
{
boolean higher_than_mid = false;
digitalWrite(SENSOR_INDICATOR, LOW);
int sensor_value = analogRead(SENSOR_PIN);
// if the sensor_value is greater than sensor mid
// set higher_than_mid to true AND turn on your indicator (HIGH)
// your code here
return higher_than_mid;
}LEFT_SENSOR) - ?? Muttrar för maskinskruvar (lokal järnaffär)
-1 x ($ RIGHT_SENSOR . MIDDLE_SENSOR left_sensor_mid ) - dubbel Foam dubbelsidig tejp ~ 1 right_sensor_mid cm längd x ~ 1 cm bred) (lokal järnaffär)
-1 x ($ middle_sensor_mid . RIGHT_INDICATOR LEFT_INDICATOR )-vit eltejp rulle (lokal järnaffär)
-1 x ($ MIDDLE_INDICATOR . setup value_higher_than_mid )-Core skumgummiplatta value_lower_than_mid 4 x loop 6" 1/4" tjock
-1 x ($ boolean saw_right = value_lower_than_mid(RIGHT_SENSOR, right_sensor_mid, RIGHT_INDICATOR);
boolean saw_left = ?
boolean saw_middle = ? . int calibrate(int SENSOR_PIN, int INDICATOR_PIN)
{
int sensor_mid = 0;
int sensor_high = 0;
int sensor_low = 1023;
unsigned long current_time = millis();
unsigned long end_time = current_time + 5000;
// turn on your indicator light here (set it to HIGH!)
// your code here
while (current_time < end_time)
{
// now update the current time
current_time = millis();
// get a new sensor_value here!
// your code here
// record the minimum sensor value
if (sensor_value < sensor_low)
{
// your code here
}
// record the maximum sensor value
// your code here
{
sensor_high = sensor_value;
}
}
// turn OFF your indicator light here (set it to LOW!)
// your code here
//set mid to be the MIDDLE! :)
sensor_mid = (sensor_high + sensor_low)/2;
return sensor_mid;
} setup )-värme krympa Tube: right_sensor_mid = calibrate(RIGHT_SENSOR, RIGHT_INDICATOR); 5cm av void move_car(boolean saw_right, boolean saw_left, boolean saw_middle) / loop move_car "(~ move_car .4mm) diameter.
Rekommenderas starkt
-Ren arbetsyta
-Bra belysning
-Någon awesome att arbeta med
Kort på resurser?
-Ta reda på move_car det finns en lokal hackerspace nära av!
-Behöver det idag? Radioshack. Kan du vänta ett par dagar? Adafruitoch Sparkfun är utmärkta resurser.
Vem har gjort detta?
-Detta instructable var presenteras av Khevna Shah och Josh Williams och mycket hjälp från den världens vänligaste Hackerspace: alla händer Active
* Har en laserskärare?
-Se PDF-filerna! De innehåller en pr if(saw_middle == true)
{
stop_car();
}
else if ((saw_right == true) && (saw_left == false))
{
// do something
}
else if kan version av toppen och botten bil pläterar, en med hjul. PR dem ut och köpa ett ark med 1/8" baltiska Björk. A med en borr, såg ett bra sortiment av bitar och en lämplig kommer att göra för en elegant trä version!