poniedziałek, 7 kwietnia 2014

4WD Robot Smart Car

Na podwozie do pierwszego samojezdnego robota wybrałem ten model. Jest w rozsądnej cenie i prezentuje się całkiem ładnie. poza tym ma wystarczającą liczbę otworów na mocowanie różnego rodzaju czujników. silniki można mocować na dwa różne sposoby albo jak na zdjęciu na dolnej lub na górnej płycie. Ja jak na razie wybrałem tą drugą opcję. Na górnej płycie zamontowałem Arduino, są tam odpowiednio wywiercone otwory do jego zamocowania.

W dolnej części zamontowałem czujniki dźwięku, czujnik odległości na podczerwień.

piątek, 4 kwietnia 2014

Buzzer (SKU: DFR0032)

...

int buzzPin =  10;    //Podłącz Buzzer do Digital Pin10
void setup() 
{       
  pinMode(buzzPin, OUTPUT);    
}
void loop()                    
{
  digitalWrite(buzzPin, HIGH);
  delay(1);
  digitalWrite(buzzPin, LOW);
  delay(1000);       
}


buzer se światłomierzem

int odczyt; // zadeklaruj zmienną typu integer (liczba całkowita) o nazwie odczyt void setup() { pinMode(7, OUTPUT); //zadeklaruj pin D7 jako WYJŚCIE } void loop() { odczyt = analogRead(A0); //przypisz wartość odczytaną z pinu A0 do zmiennej odczyt tone(7, odczyt); //wygeneruj na pinie D7 przy pomocy funkcji tone dźwięk o częstotliwości równej wartości zmiennej odczyt }

Odbiornik podczerwieni 38kHz

int RECV_PIN = 11; IRrecv irrecv(RECV_PIN); decode_results results; void setup() { Serial.begin(9600); irrecv.enableIRIn(); // Start the receiver } void loop() { if (irrecv.decode(&results)) { Serial.println(results.value, HEX); irrecv.resume(); // Receive the next value } }

czwartek, 3 kwietnia 2014

Analogowy czujnik dźwięku (SKU: DFR0034)

...

void setup()
{
  Serial.begin(9600); // open serial port, set the baud rate to 9600 bps
}
void loop()
{
      int val;
      val=analogRead(0);   //connect mic sensor to Analog 0
      Serial.println(val,DEC);//print the sound value to serial       
      delay(100);
}

...

SensorShield V4-TK1-crop


Czujnik zbliżeniowy na podczerwień E18-D80NK

Pierwszy projekt jeżdżącego robota najłatwiej chyba zrobić z tym czujnikiem. Jego wadą to wąskie pole widzenia przy wykrywaniu przeszkody. Dlatego chyba najczęściej na zdjęciach widać roboty z przynajmniej 3 czujnikami boczne czujniki można zamontować np pod kontem 45* względem centralnego. Poniżej kod na 4 silniki. Po wykryciu przeszkody system losuje liczby "0" - obracamy się w lewo i "1" - obracamy się w prawo, w innym przypadku jedziemy prosto przed siebie.
kod
------------------------------
#include 
const int IR = 13;

long RandNumber;
AF_DCMotor motor1(1, MOTOR12_64KHZ);
AF_DCMotor motor2(2, MOTOR12_64KHZ);
AF_DCMotor motor3(3, MOTOR12_64KHZ);
AF_DCMotor motor4(4, MOTOR12_64KHZ);

void setup()

{
  pinMode(IR,INPUT);
  motor1.setSpeed(255);
  motor2.setSpeed(255);
  motor3.setSpeed(255);
  motor4.setSpeed(255);
}

void loop(){

  if(digitalRead(IR) == LOW)
  {RandNumber = random(0,2);}
 
  if(RandNumber == 0)
  {stopL();}
  else if(RandNumber == 1)
  {stopR();}
  else
  {naprzod();}
}

void stopL(){
  motor1.run(RELEASE);
  motor2.run(RELEASE);
  motor3.run(RELEASE);
  motor4.run(RELEASE);
  delay(1000);
  motor1.run(BACKWARD);
  motor2.run(BACKWARD);
  motor3.run(BACKWARD);
  motor4.run(BACKWARD);
  delay(500);
  motor1.run(BACKWARD);
  motor2.run(BACKWARD);
  motor3.run(FORWARD);
  motor4.run(FORWARD);
  delay(650);
}

void stopR(){
  motor1.run(RELEASE);
  motor2.run(RELEASE);
  motor3.run(RELEASE);
  motor4.run(RELEASE);
  delay(1000);
  motor1.run(BACKWARD);
  motor2.run(BACKWARD);
  motor3.run(BACKWARD);
  motor4.run(BACKWARD);
  delay(500);
  motor1.run(FORWARD);
  motor2.run(FORWARD);
  motor3.run(BACKWARD);
  motor4.run(BACKWARD);
  delay(650);
}

void naprzod(){
  motor1.run(FORWARD);
  motor2.run(FORWARD);
  motor3.run(FORWARD);
  motor4.run(FORWARD);
}

piątek, 21 marca 2014

Zabawa RGB z telefonem w systemie android

Projekt przygotowany przez Bee Project (Thailand)
Aplikacja na androida

kod:

//przypisujemy piny do RGB
const int redPin = 6;
const int greenPin = 5;
const int bluePin = 3;

#define REDPIN 6
#define GREENPIN 5
#define BLUEPIN 3

#define FADESPEED 5

void setup() {
// initialize serial:
Serial.begin(9600);

// make the pins outputs:
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);

Serial.print("Arduino control RGB LEDs Connected OK ( Sent From Arduinno Board )");
Serial.print('\n');
}

void loop() {

// if there's any serial available, read it:
while (Serial.available() > 0) {

 // look for the next valid integer in the incoming serial stream:
 int red = Serial.parseInt();
 // do it again:
 int green = Serial.parseInt();
 // do it again:
 int blue = Serial.parseInt();

 // look for the newline. That's the end of your
 // sentence:
 if (Serial.read() == '\n') {
          
   // constrain the values to 0 - 255 and invert
   // if you're using a common-cathode LED, just use "constrain(color, 0, 255);"

   red = constrain(red, 0, 255);
   green = constrain(green, 0, 255);
   blue = constrain(blue, 0, 255);
 
   // fade the red, green, and blue legs of the LED:
   analogWrite(redPin, red);
   analogWrite(greenPin, green);
   analogWrite(bluePin, blue);
 
  // print the three numbers in one string as hexadecimal:
  Serial.print("Data Response : ");
  Serial.print(red, HEX);
  Serial.print(green, HEX);
  Serial.println(blue, HEX);
 }
}

}