Cześć.
Wiem, że temat związany z App inventorem pojawiał się już kilka razy, jednakże są już dość stare (sprawdzone w wyszukiwarce, ostatni na tym dziale w maju) a ich treść jakoś nie rozwiązała problemu.
Potrzebuję wysterować jeden serwo tak, by z telefonu zadać mu czas w jakim będzie obrócony po czym wróci do pozycji 0. Do tego wykorzystuję HC-06 podłączone do Arduino nano.
W przypadku prób wysterowania serwo z komputera (zasilanie i monitor portu szeregowego z kompa) bezproblemowo działa - odwraca się np. na 2s po czym wraca do pozycji 0.
W przypadku gdy nano podłączę już pod powerbank, przewody tx i rx z bluetooth, pojawia się problem iż niezależnie od wysłanej liczby serwo ustawia się i natychmiast wraca na pozycję wyjściową. W przypadku jak próbuję zadać mu jakąś konkretną liczbę (np. ma wysyłać 3 po wciśnięciu klawisza) to ustawi się w pozycji "1" gdzie już zostanie. W odpowiedzi aplikacja dostaje krzaki.
Jestem kompletnie zielony, stąd pytania:
- Jaką ustawić prędkość Serial w przypadku bluetooth? Na tutkach widziałem i 9600 i 38400
- Co głównie robię nie tak?
Kod. Skromny, ale właściwie nic więcej ten układ nie potrzebuje robić. Zawiera jedynie serwo i bluetooth:
#include <Servo.h>
Servo serwo;
void setup() {
Serial.begin(9600);
serwo.attach(5);
serwo.write(0);
}
void loop() {
if(Serial.available()>0){
int czas2 = Serial.read();
Serial.println(czas2*1000);
serwo.write(90);
delay(czas2*1000);
serwo.write(0);
}
}
mnożnik "*1000" W celu uzyskania wartości w sekundach. Apka daje np. 1, ardu robi z tego 1000 co daje 1s w delay (jak dobrze kojarzę).
Obstawiam, iż jednym z problemów może być to iż wysyłam liczby zmiennoprzecinkowe, ale wtedy int (o ile dobrze kojarzę) je powinien po prostu pomijać. Wysłałem liczbę całkowitą z podobnym skutkiem. Zamieniłem blok by nie wysyłał tekstu z "Press Time" a "3" i nie było różnicy.
Sorry za pewnie tak banalny problem, ale spędziłem nad nim wieczór i nie mogę zrozumieć co jest nie tak