04-02-2017, 16:35
Witam.
Po pewnym czasie postanowiłem odkopać arduino i stworzyć z powrotem robota. Sam robot posiada dwa silniki z jedną osią jezdną z tyłu sterowane przez układ L298 (dostępny w botlandzie) czujnik ruchu HC SR 04 i bluetooth HC-06 FC114 i serwomechanizm (z którego prawdopodbnie zrezygnuje ze względu na brak miejsc pinów zasilania w arudino) . Kiedyś już tworzyłem taką konstrukcje i miałem problem z kodem jednak po rozmowie tutaj na forum uzyskałem kod który działał . Niestety teraz odtwarzając projekt 1:1 wystąpił problem otóż : Po podłączeniu wszystkich część i połączeniu się przez smartfon z bluetooth arduino wogóle nie reaguje tak jakby nie otrzymywało informacji (świadczy o tym mrugnięcie diod TX/RX).Z początku myślałem że jest coś nie tak z arduino ale po podłączeniu do komputera i wysłaniu czegokolwiek przez monitor portu szeregowego ów diody mrugają. Nie wiem czego może dotyczyć bład będe wdzięczny za wszelką okazaną pomoc jak i konstruktywną krytykę
Zasilanie:
Arduino- bateria 9V przez wtyk DC 2.1/5.5 (czerwony środek / czarny obudowa)
Sterownik L298 - koszyk baterii 6xAA
Podłączenie:
Sterownik - przewody do silników / 4 przewody do arduino na pin 4,5,6,7
Bluetooth- 1-GND 2-3,3V 3-TX-RX 4-RX-TX
Czujnik odległości 1-GND 2-5V 3-ECHO-12pin 4.TRIG-11pin
Serwo-aktualnie nie podłaczone brak portów zasilających
2 silniki DAGU 4,5V 48:1 podłaczone do kanałów sterownika
Kod - wcześniej działał dzięki uprzejmości moderatora jasqa
Po pewnym czasie postanowiłem odkopać arduino i stworzyć z powrotem robota. Sam robot posiada dwa silniki z jedną osią jezdną z tyłu sterowane przez układ L298 (dostępny w botlandzie) czujnik ruchu HC SR 04 i bluetooth HC-06 FC114 i serwomechanizm (z którego prawdopodbnie zrezygnuje ze względu na brak miejsc pinów zasilania w arudino) . Kiedyś już tworzyłem taką konstrukcje i miałem problem z kodem jednak po rozmowie tutaj na forum uzyskałem kod który działał . Niestety teraz odtwarzając projekt 1:1 wystąpił problem otóż : Po podłączeniu wszystkich część i połączeniu się przez smartfon z bluetooth arduino wogóle nie reaguje tak jakby nie otrzymywało informacji (świadczy o tym mrugnięcie diod TX/RX).Z początku myślałem że jest coś nie tak z arduino ale po podłączeniu do komputera i wysłaniu czegokolwiek przez monitor portu szeregowego ów diody mrugają. Nie wiem czego może dotyczyć bład będe wdzięczny za wszelką okazaną pomoc jak i konstruktywną krytykę
Zasilanie:
Arduino- bateria 9V przez wtyk DC 2.1/5.5 (czerwony środek / czarny obudowa)
Sterownik L298 - koszyk baterii 6xAA
Podłączenie:
Sterownik - przewody do silników / 4 przewody do arduino na pin 4,5,6,7
Bluetooth- 1-GND 2-3,3V 3-TX-RX 4-RX-TX
Czujnik odległości 1-GND 2-5V 3-ECHO-12pin 4.TRIG-11pin
Serwo-aktualnie nie podłaczone brak portów zasilających
2 silniki DAGU 4,5V 48:1 podłaczone do kanałów sterownika
Kod - wcześniej działał dzięki uprzejmości moderatora jasqa
Kod:
#include <Servo.h>
Servo myservo;
#include <NewPing.h>
#define TRIGGER_PIN 11
#define ECHO_PIN 12
#define MAX_DISTANCE 200
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
int pos = 0;
byte state = 1;
long pm = 0;
byte echo = 0;
int Motor1 = 4;
int Motor2 = 5;
int Motor3 = 6;
int Motor4 = 7;
char command = 'S';
int velocity = 0;
void setup()
{
Serial.begin(9600);
pinMode(Motor1, OUTPUT);
pinMode(Motor2, OUTPUT);
pinMode(Motor3, OUTPUT);
pinMode(Motor4, OUTPUT);
pinMode(TRIGGER_PIN, OUTPUT); //Pin, do którego podłączymy trig jako wyjście
pinMode(ECHO_PIN, INPUT);
myservo.attach(8);
}
void loop(){
{
long cm = millis();
if ( cm - pm > 1 )echo = sonar.ping_cm();
if ( cm - pm > 10 and state == 1){
pos = constrain(pos, 0, 180);
pos++;
myservo.write(pos);
if (pos >= 180)state = 2;
pm = cm;}
if ( cm - pm > 10 and state == 2){
pos = constrain(pos, 0, 180);
pos--;
myservo.write(pos);
if (pos <= 0)state = 1;
pm = cm;}
// Serial.print(pos);
// Serial.print(" - ");
// Serial.print(echo);
// Serial.println("cm");
}
if (Serial.available() > 0)command = Serial.read();
if ( echo < 10)command = 'S';
switch(command){
case 'F':
digitalWrite(Motor1, HIGH);
digitalWrite(Motor4, HIGH);
break;
case 'B':
digitalWrite(Motor2, HIGH);
digitalWrite(Motor3, HIGH);
break;
case 'R':
digitalWrite(Motor2, HIGH);
digitalWrite(Motor4, HIGH);
break;
case 'L':
digitalWrite(Motor1, HIGH);
digitalWrite(Motor3, HIGH);
break;
case 'S':
digitalWrite(Motor1, LOW);
digitalWrite(Motor2, LOW);
digitalWrite(Motor3, LOW);
digitalWrite(Motor4, LOW);
break;
}
}