
Ultrasonic Smart Car Kit

Arduino cheap robot car

Funduino Arduino DuemilaNove clon
It’s really cheap but it does not include any documentation; but don’t panic, all you will need can be found on Internet. And now, the main electronic components: the microcontroller, the dual motor driver, the ultrasonic sensor and the servo:
The microcontroller brain is a Funduino (Arduino Duemilanove clone), and as far I’ve used it (and as other buyer said is fully, at least for software, compatible). Here we will not have any problem because there are a lot of documentation about Arduino and Duemilanove.
A simple hello world example (here the file)
// Blinking LED
int ledPin = 13; // LED connected to digital pin 13
void setup()
{
Serial.begin(57600);
printf ("Setup/n/l");
Serial.println("Hello world!");
pinMode(ledPin, OUTPUT); // sets the digital pin as output
}
void loop()
{
printf ("2009");
Serial.println("2009");
digitalWrite(ledPin, HIGH); // sets the LED on
delay(1000); // waits for a second
digitalWrite(ledPin, LOW); // sets the LED off
delay(1000); // waits for a second
}

Dual_H-Bridge_Motor_Driver
But to control the two motors this kit use an Dual H-Bridge motor driver (L298). Here (read the Drive Two DC Motors section) you can find a lot of useful documentation and examples, and here and here you can find also more information, specially about electronics.
Here a file with a simple example, and here another example with speed control
int ENA=5;//connected to Arduino's port 5(output pwm)
int IN1=2;//connected to Arduino's port 2
int IN2=3;//connected to Arduino's port 3
int ENB=6;//connected to Arduino's port 6(output pwm)
int IN3=4;//connected to Arduino's port 4
int IN4=7;//connected to Arduino's port 7
int ledPin = 13;
void blink(int times)
{
while (times>0)
{
digitalWrite(ledPin, HIGH); // sets the LED on
delay(500); // waits for a second
digitalWrite(ledPin, LOW); // sets the LED off
delay(500);
times--;
}
}
void initialize()
{
Serial.println("Two motors");
pinMode(ENA,OUTPUT);
pinMode(ENB,OUTPUT);
pinMode(IN1,OUTPUT);
pinMode(IN2,OUTPUT);
pinMode(IN3,OUTPUT);
pinMode(IN4,OUTPUT);
digitalWrite(ENA,LOW);
digitalWrite(ENB,LOW);//stop motors
digitalWrite(IN1,HIGH);
digitalWrite(IN2,LOW);//setting motorA's forward directon
digitalWrite(IN3,HIGH);
digitalWrite(IN4,LOW);//setting motorB's forward directon
}
void setup()
{
Serial.begin(57600);
initialize();
}
void loop()
{
int t=1;
initialize();
Serial.println("1 Full forward");
analogWrite(ENA,255);//start driving motorA
analogWrite(ENB,255);//start driving motorB
delay(1000*t);
Serial.println("2.1 Turning A");
// Backwards motor A, turning robot
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH);// setting motorA's backwards directon
delay(500*t);
// full forward again
digitalWrite(IN1,HIGH);
digitalWrite(IN2,LOW);//setting motorA's forward directon
delay (1000*t);
Serial.println("2.2 Turning B");
// Backwards motor B, turning robot
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH);//setting motorB's backward directon
delay(500*t);
// full forward again
digitalWrite(IN3,HIGH);
digitalWrite(IN4,LOW);//setting motorB's forward directon
delay (1000*t);
Serial.println("3 Full backward");
// full backwards
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH);// setting motorA's backwards directon
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH);//setting motorB's backward directon
delay (2000*t);
// Slowing motors
Serial.println("4 slowing motors");
analogWrite (ENA,180);
analogWrite (ENB,180);
delay(1000*t);
Serial.println("5 more slowing motors");
analogWrite (ENA,110);//stop driving motorA
analogWrite (ENB,110);//stop driving motorB
delay(1000*t);
Serial.println("6 stoping motors");
analogWrite (ENA,0);//stop driving motorA
analogWrite (ENB,0);//stop driving motorB
blink (3);

Ultrasonic sensor hc-sr04
The HC-SR04 ultrasonic distance sensor, example of use (here the file):
/*
HC-SR04 Ping distance sensor]
VCC to arduino 5v GND to arduino GND
Echo to Arduino pin 13 Trig to Arduino pin 12
More info at: http://goo.gl/kJ8Gl
*/
#define trigPin 9
#define echoPin 11
void setup() {
Serial.begin (115200);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
void loop() {
int duration, distance;
digitalWrite(trigPin, HIGH);
delayMicroseconds(1000);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration/2) / 29.1;
if (distance > 400 || distance < 0){
Serial.println("Out of range");
}
else {
Serial.print(distance);
Serial.println(" cm");
}
delay(500);
}

TowerPro micro servo SG90
And the Tower PRO SG-90 micro servo (and here the file with the example):
// Sweep
// by BARRAGAN <http://barraganstudio.com>
// This example code is in the public domain.
#include
Servo myservo; // create servo object to control a servo
// a maximum of eight servo objects can be created
int pos = 0; // variable to store the servo position
void setup()
{
myservo.attach(3); // attaches the servo on pin 3 to the servo object
}
void loop()
{
// goes from 0 degrees to 180 degrees in steps of 1 degree
for(pos = 0; pos < 180; pos += 1) {
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(15); // waits 15ms for the servo to reach the position
}
for(pos = 180; pos>=1; pos-=1) // goes from 180 degrees to 0 degrees
{
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(15); // waits 15ms for the servo to reach the position
}
}
Soon I will add an LCD display with 6 buttons
Like this:
Like Loading...