Arduino nie wykonuje komend; HC-06

Masz problem, z którym nie możesz sobie poradzić? Pisz śmiało!
ODPOWIEDZ
musiccool
Młodszy majsterkowicz
Posty: 14
Rejestracja: 13 gru 2014, 17:35

Arduino nie wykonuje komend; HC-06

Post autor: musiccool » 8 kwie 2015, 20:52

Witam. Mam problem z bluetoothem. Po wgraniu podstawowego kodu

Kod: Zaznacz cały

int data;

void setup() {
  Serial1.begin(9600);
}
void loop (){
  data=Serial1.read();
  Serial.println(data);
  delay(200); }
Wszystko ładnie się pokazuje. Dane wysyłane, odbierane, ogólnie wszystko śmiga.

Gdy próbuję wywołać np. zapalenie diody led to w monitorze pokazuje się, że komenda została wysłana ale nic się dalej nie dzieje.

Bluetooth to HC-06.

Co miesiąc do wygrania nagrody o wartości ponad 1600 zł!


musiccool
Młodszy majsterkowicz
Posty: 14
Rejestracja: 13 gru 2014, 17:35

Re: Arduino nie wykonuje komend; HC-06

Post autor: musiccool » 8 kwie 2015, 21:08

Nie, nie na tym. Korzystałem z wielu gotowych kodów i żaden z nich nie działał.
razorxx100
Starszy majsterkowicz
Posty: 329
Rejestracja: 1 sie 2014, 22:57

Re: Arduino nie wykonuje komend; HC-06

Post autor: razorxx100 » 8 kwie 2015, 21:11

To moze wez pokaz jaki.
musiccool
Młodszy majsterkowicz
Posty: 14
Rejestracja: 13 gru 2014, 17:35

Re: Arduino nie wykonuje komend; HC-06

Post autor: musiccool » 8 kwie 2015, 21:15

Np.

Kod: Zaznacz cały

char val; // variable to receive data from the serial port
int ledpin = 8; // LED connected to pin 48 (on-board LED)

void setup() {

  pinMode(ledpin, OUTPUT);  // pin 48 (on-board LED) as OUTPUT
  Serial.begin(9600);       // start serial communication at 9600bps
}

void loop() {

  if( Serial.available() )       // if data is available to read
  {
    val = Serial.read();         // read it and store it in 'val'
  }
  if( val == 'H' )               // if 'H' was received
  {
    digitalWrite(ledpin, HIGH);  // turn ON the LED
  } else { 
    digitalWrite(ledpin, LOW);   // otherwise turn it OFF
  }
  delay(100);                    // wait 100ms for next reading
} 
stiven
Złota rączka
Posty: 1645
Rejestracja: 13 maja 2014, 08:47
Lokalizacja: Zielona Góra

Re: Arduino nie wykonuje komend; HC-06

Post autor: stiven » 8 kwie 2015, 21:20

Piszesz, że na serialu widzisz, że kod został wysłany, więc masz dwa arduino i chcesz między nimi wysyłać kody?
musiccool
Młodszy majsterkowicz
Posty: 14
Rejestracja: 13 gru 2014, 17:35

Re: Arduino nie wykonuje komend; HC-06

Post autor: musiccool » 8 kwie 2015, 21:24

Android -> Arduino

app Bluetooth Terminal
razorxx100
Starszy majsterkowicz
Posty: 329
Rejestracja: 1 sie 2014, 22:57

Re: Arduino nie wykonuje komend; HC-06

Post autor: razorxx100 » 8 kwie 2015, 21:25

Wedlug tego kodu nie wiem czy nawet zobaczysz jak mrugnie ta dioda. 1/10s to chyba troche malo.
musiccool
Młodszy majsterkowicz
Posty: 14
Rejestracja: 13 gru 2014, 17:35

Re: Arduino nie wykonuje komend; HC-06

Post autor: musiccool » 8 kwie 2015, 21:27

Kod: Zaznacz cały

int ledPin = 13; 
int state = 0;
int flag = 0; 
 
void setup() {
 pinMode(ledPin, OUTPUT);
 digitalWrite(ledPin, LOW);
 
 Serial.begin(9600); // Default connection rate for my BT module
}
 
void loop() {

 if(Serial.available() > 0){
 state = Serial.read();
 flag=0;
 }

 if (state == '0') {
 digitalWrite(ledPin, LOW);
 if(flag == 0){
 Serial.println("LED: off");
 flag = 1;
 }
 }

 else if (state == '1') {
 digitalWrite(ledPin, HIGH);
 if(flag == 0){
 Serial.println("LED: on");
 flag = 1;
 }
 }
}

Tutaj powinna się włączyć i wyłączyć, lecz nie działa.
stiven
Złota rączka
Posty: 1645
Rejestracja: 13 maja 2014, 08:47
Lokalizacja: Zielona Góra

Re: Arduino nie wykonuje komend; HC-06

Post autor: stiven » 8 kwie 2015, 21:30

@razorxx100 dokładnie jak napisał Krapi, dioda będzie świecić aż nie zostanie ponownie coś wysłane.
razorxx100
Starszy majsterkowicz
Posty: 329
Rejestracja: 1 sie 2014, 22:57

Re: Arduino nie wykonuje komend; HC-06

Post autor: razorxx100 » 8 kwie 2015, 21:30

Czyli w serialu nie wyswietla ci sie LED: off itd?
stiven
Złota rączka
Posty: 1645
Rejestracja: 13 maja 2014, 08:47
Lokalizacja: Zielona Góra

Re: Arduino nie wykonuje komend; HC-06

Post autor: stiven » 8 kwie 2015, 21:41

@musiccool
No właśnie skąd wiesz, że kod został odebrany(tak napisałeś)?

//
Ustaw prędkość seriala na 38400, jeśli jej nie zmieniłeś, bo taka jest prędkość domyślna. Jeśli nie zmieniłeś jej komendami AT to na 9600 nie będzie działać.
musiccool
Młodszy majsterkowicz
Posty: 14
Rejestracja: 13 gru 2014, 17:35

Re: Arduino nie wykonuje komend; HC-06

Post autor: musiccool » 8 kwie 2015, 21:45

W serialu na 1 kodzie pokazują się inne znaki niż -1
stiven
Złota rączka
Posty: 1645
Rejestracja: 13 maja 2014, 08:47
Lokalizacja: Zielona Góra

Re: Arduino nie wykonuje komend; HC-06

Post autor: stiven » 8 kwie 2015, 21:47

W tym pierwszym kodzie masz błąd, korzystasz z dwóch seriali, a tylko jeden konfigurujesz w setup.
stiven
Złota rączka
Posty: 1645
Rejestracja: 13 maja 2014, 08:47
Lokalizacja: Zielona Góra

Re: Arduino nie wykonuje komend; HC-06

Post autor: stiven » 8 kwie 2015, 21:53

@Krapi
Ogólnie ten kod jest nieprawidłowy, żeby odczytywać serial, to trzeba sprawdzić najpierw czy coś jest na nim dostępne. Nie wiadomo co się pokazuje jak się tego nie robi, ale pewnie jakieś przypadkowe znaki.

@musiccool
A w tym drugim kodzie? To o co pytał razorxx100? Ten kod jest prawidłowy, przy tym kodzie coś się pokazuje na serialu? Jak nie, to sprawdź przy Serial.begin(38400).
stiven
Złota rączka
Posty: 1645
Rejestracja: 13 maja 2014, 08:47
Lokalizacja: Zielona Góra

Re: Arduino nie wykonuje komend; HC-06

Post autor: stiven » 8 kwie 2015, 22:01

@Krapi
Ale właśnie ten serial nie jest skonfigurowany.

EDIT
Na pinach 0 i 1.

EDIT2
Aha
Krapi pisze: (czyli nie będzie miał podglądu w Serial Monitorze)
musiccool
Młodszy majsterkowicz
Posty: 14
Rejestracja: 13 gru 2014, 17:35

Re: Arduino nie wykonuje komend; HC-06

Post autor: musiccool » 8 kwie 2015, 22:04

@stiven

Na drugim kodzie nie pokazuje się nic w serialu.
stiven
Złota rączka
Posty: 1645
Rejestracja: 13 maja 2014, 08:47
Lokalizacja: Zielona Góra

Re: Arduino nie wykonuje komend; HC-06

Post autor: stiven » 8 kwie 2015, 22:06

A sprawdziłeś tą prędkość 38400?
musiccool
Młodszy majsterkowicz
Posty: 14
Rejestracja: 13 gru 2014, 17:35

Re: Arduino nie wykonuje komend; HC-06

Post autor: musiccool » 8 kwie 2015, 22:07

Tak, również nic.
stiven
Złota rączka
Posty: 1645
Rejestracja: 13 maja 2014, 08:47
Lokalizacja: Zielona Góra

Re: Arduino nie wykonuje komend; HC-06

Post autor: stiven » 8 kwie 2015, 22:15

Tak, ten drugi kod będzie okej w tej sytuacji, bo ten pierwszy jest bez sensu.
musiccool
Młodszy majsterkowicz
Posty: 14
Rejestracja: 13 gru 2014, 17:35

Re: Arduino nie wykonuje komend; HC-06

Post autor: musiccool » 8 kwie 2015, 22:19

Więc od początku. Chce zrobić robota, którym będę sterował przez androida.

Robot to zumo, bluetooth HC-06.

W książce "Arduino i android - niesamowite projekty" - Simona Monka jest projekt o właśnie takim robocie.

Kod przedstawiony w książce wygląda tak:

Kod: Zaznacz cały

#include <MeetAndroid.h>

#define supplyVolts 6
#define motorVolts 5
#define baudRate 9600

MeetAndroid phone;

int left = 255; // midpoint 
int right = 255; 


int pwmLeftPin = 3;  
int pwmRightPin = 11;  
int directionLeftPin = 12;  
int directionRightPin = 13;  


void setup()  
{
  pinMode(pwmLeftPin, OUTPUT);
  pinMode(pwmRightPin, OUTPUT);
  pinMode(directionLeftPin, OUTPUT);
  pinMode(directionRightPin, OUTPUT);
  setMotors();
  
  // use the baud rate your bluetooth module is configured to 
  Serial.begin(baudRate); 
  phone.registerFunction(setLeft, 'l');  
  phone.registerFunction(setRight, 'r');  
}

void loop()
{
  phone.receive();
}

void setLeft(byte ignore, byte count)
{
  int value = phone.getInt();
  left = value;
  setMotors();
}


void setRight(byte ignore, byte count)
{
  int value = phone.getInt();
  right = value;
  setMotors();
}

void setMotors()
{
   int vLeft = abs(left - 255) * motorVolts / supplyVolts;
   int vRight = abs(right - 255) * motorVolts / supplyVolts;
   int dLeft = (left > 255);
   int dRight = (right > 255);
   if (vLeft < 50)
   {
     vLeft = 0; 
   }
   if (vRight < 50)
   {
     vRight = 0; 
   }
   analogWrite(pwmLeftPin, vLeft);
   analogWrite(pwmRightPin, vRight);
   digitalWrite(directionLeftPin, dLeft);
   digitalWrite(directionRightPin, dRight);
}

U mnie piny wyglądają tak:

7 right motor direction control line
8 left motor direction control line
9 right motor PWM control line
10 left motor PWM control line
0 tx bluetooth
1 rx bluetooth

Apka na telefon to DroidDroid.

Wszystko ładnie się łączy i słychać pisk silników, lecz nic pozatym.
ODPOWIEDZ

Strony partnerskie: