LEGO RCX Fire Explorer Fire Explorer LEGO RCX

  • Slides: 30
Download presentation

Το LEGO RCX ρομπότ “Fire. Explorer”

Το LEGO RCX ρομπότ “Fire. Explorer”

Το πρόγραμμα “Fire. Explorer” σε LEGO RCX

Το πρόγραμμα “Fire. Explorer” σε LEGO RCX

Το LEGO NXT ρομπότ “Bumperbot”

Το LEGO NXT ρομπότ “Bumperbot”

Το LEGO NXT ρομπότ “Explorer”

Το LEGO NXT ρομπότ “Explorer”

Το NXT ρομπότ “Fire. Explorer”

Το NXT ρομπότ “Fire. Explorer”

Το NXT ρομπότ “Fire. Explorer”

Το NXT ρομπότ “Fire. Explorer”

Το LEGO EV 3 ρομπότ “Explorer”

Το LEGO EV 3 ρομπότ “Explorer”

Το LEGO EV 3 ρομπότ “Explorer”

Το LEGO EV 3 ρομπότ “Explorer”

Το LEGO EV 3 ρομπότ “Explorer”

Το LEGO EV 3 ρομπότ “Explorer”

Το LEGO EV 3 ρομπότ “Fire. Explorer”

Το LEGO EV 3 ρομπότ “Fire. Explorer”

Το LEGO EV 3 ρομπότ “Fire. Explorer”

Το LEGO EV 3 ρομπότ “Fire. Explorer”

Το LEGO EV 3 ρομπότ “Fire. Explorer”

Το LEGO EV 3 ρομπότ “Fire. Explorer”

Το LEGO EV 3 ρομπότ “Fire. Explorer”

Το LEGO EV 3 ρομπότ “Fire. Explorer”

Το πρόγραμμα “Fire. Explorer” σε LEGO EV 3

Το πρόγραμμα “Fire. Explorer” σε LEGO EV 3

Το ρομπότ “Fire. Explorer” σε Arduino

Το ρομπότ “Fire. Explorer” σε Arduino

Το ρομπότ “Fire. Explorer” σε Arduino

Το ρομπότ “Fire. Explorer” σε Arduino

Το ρομπότ “Fire. Explorer” σε Arduino

Το ρομπότ “Fire. Explorer” σε Arduino

Το ρομπότ “Fire. Explorer” σε Arduino

Το ρομπότ “Fire. Explorer” σε Arduino

Το πρόγραμμα “Fire. Explorer” σε Wiring C (Arduino) • • /* RC looking around

Το πρόγραμμα “Fire. Explorer” σε Wiring C (Arduino) • • /* RC looking around with ultrasound on a servo and turning to the direction of longest distance from an obstacle. In addition to that, RC has moustache type two switches -->right touch or closing circuit lights the blue LED on and makes a left turn -->left touch or closing circuit lights the red LED on and makes a right turn */ #include <Servo. h> #include "AFMotor. h" • • AF_DCMotor motor 1(1, MOTOR 12_64 KHZ); AF_DCMotor motor 2(2, MOTOR 12_64 KHZ); • • • Servo servo. HEAD; #define echo. Pin 14 // Echo Pin #define trig. Pin 15 // Trigger Pin • • • const int ledfire = 20; // choose the pin for the LEDs const input. LEFT = 16; // choose the input pin (for a pushbutton) const input. RIGHT = 17; • • • int minimum. Range = 40; // Minimum range needed long duration, distance; // Duration used to calculate distance int max. Distance[30]; int max. D=1; int i, vector, pos, time; • • • //##########################################/ void setup() { Serial. begin (9600); pin. Mode(trig. Pin, OUTPUT); pin. Mode(echo. Pin, INPUT); pin. Mode(ledfire, OUTPUT); // declare LED as output pin. Mode(input. LEFT, INPUT); // declare pushbutton as input pin. Mode(input. RIGHT, INPUT); motor 1. set. Speed(170); motor 2. set. Speed(170); servo. HEAD. attach(10);

Το πρόγραμμα “Fire. Explorer” σε Wiring C (Arduino) • } • • • //##########################################/

Το πρόγραμμα “Fire. Explorer” σε Wiring C (Arduino) • } • • • //##########################################/ void loop() { • • • /*********************/ • • if (distance <= minimum. Range && distance > 20) { motor 1. run(RELEASE); motor 2. run(RELEASE); • • • • • i=0; servo. HEAD. write(90); moustache(); //@@@@@@@@@@ find_distance(); control_minimum_distance(); for(pos = 0; pos < 180; pos= pos + 6) { i=i+1; servo. HEAD. write(pos); find_distance(); max. Distance[i]=distance; if(max. Distance[i]> max. D) {max. D = max. Distance[i]; vector = pos; delay(30); } servo. HEAD. write(90); } /* for(pos = 180; pos>=1; pos= pos - 6) { i = i+1;

Το πρόγραμμα “Fire. Explorer” σε Wiring C (Arduino) • • • • • servo.

Το πρόγραμμα “Fire. Explorer” σε Wiring C (Arduino) • • • • • servo. HEAD. write(pos); find_distance(); max. Distance[i]=distance; if(max. Distance[i]> max. D) {max. D = max. Distance[i]; vector = pos; delay(30); }*/ //} Serial. print("max. D= "); Serial. println(max. D); Serial. print(" At an angle: "); Serial. println(vector); /********************/ if(vector<90) { time = vector*(500/90); • • motor 2. run(BACKWARD); motor 1. run(FORWARD); moustache(); //@@@@@@@@@@ delay(time); } if(vector>=90) { time = (vector-90)*(500/90); • • • motor 1. run(BACKWARD); motor 2. run(FORWARD); moustache(); //@@@@@@@@@@ delay(time); } Serial. print(" --------- time = "); Serial. println(time); } else {

Το πρόγραμμα “Fire. Explorer” σε Wiring C (Arduino) • • • • • •

Το πρόγραμμα “Fire. Explorer” σε Wiring C (Arduino) • • • • • • • • • if (distance >= minimum. Range) { motor 1. run(BACKWARD); motor 2. run(BACKWARD); moustache(); //@@@@@@@@@@ } Serial. print("distance>maximum****** ="); Serial. println(distance); } //getting the voltage reading from the temperature sensor int reading = analog. Read(sensor. Pin); // converting that readbbbbbbbbing to voltage, for 3. 3 v arduino use 3. 3 float voltage = reading * 5. 0; voltage /= 1024. 0; // print out the voltage Serial. print(voltage); Serial. println(" volts"); // now print out the temperature float temperature. C = (voltage - 0. 5) * 100 ; //converting from 10 mv per degree wit 500 m. V offset //to degrees ((voltage - 500 m. V) times 100) Serial. print(temperature. C); Serial. println(" degrees C"); if(temperature. C >= 19) { motor 1. run(BACKWARD); motor 2. run(BACKWARD); delay(1000) motor 1. run(RELEASE); motor 2. run(RELEASE); digital. Write(ledfire, HIGH); } else {

Το πρόγραμμα “Fire. Explorer” σε Wiring C (Arduino) • • digital. Write(ledfire, LOW); }

Το πρόγραμμα “Fire. Explorer” σε Wiring C (Arduino) • • digital. Write(ledfire, LOW); } delay(1000); //waiting a second } //##########################################/ • • • void find_distance() { • • • digital. Write(trig. Pin, HIGH); delay. Microseconds(10); //Calculate the distance (in cm) based on the speed of sound. distance = duration/58. 2; } • //##########################################/ • • • • void control_minimum_distance() { if(distance<20) { motor 1. run(RELEASE); motor 2. run(RELEASE); digital. Write(trig. Pin, LOW); delay. Microseconds(2); digital. Write(trig. Pin, LOW); duration = pulse. In(echo. Pin, HIGH); while (distance<20) { motor 1. run(FORWARD); motor 2. run(FORWARD); delay(50); find_distance(); }

Το πρόγραμμα “Fire. Explorer” σε Wiring C (Arduino) • • • • • •

Το πρόγραμμα “Fire. Explorer” σε Wiring C (Arduino) • • • • • • • } //##########################################/ void moustache() { int val 1 = digital. Read(input. LEFT); // read input value int val 2 = digital. Read(input. RIGHT); if (val 1 == HIGH) // check if the input is HIGH { motor 1. run(RELEASE); motor 2. run(BACKWARD); // and in that case turns right motor 1. run(FORWARD); delay(500); } else { servo. HEAD. write(90); } • • • • if (val 2 == HIGH) // check if the input is HIGH { motor 1. run(RELEASE); motor 2. run(RELEASE); motor 1. run(BACKWARD); motor 2. run(FORWARD); delay(500); } else { servo. HEAD. write(90); } } } else { motor 1. run(BACKWARD); motor 2. run(BACKWARD); moustache(); //@@@@@@@@@@ }