Stap 2: Part2: seriële communicatie
onderdelen die nodig zijn: Androïde apparaat (API niveau 17 vanaf), OTG kabelReluctant die vrij ik ben, voor de aankoop van een bluetooth-shield voor arduino voor communicatie. Bovendien ben ik met behulp van een android telefoon met android 4.3 (API niveau 19). In deze bijzondere versie ondersteunt het directe USB-aansluiting van zeggen een toetsenbord of muis tot de android telefoon via microUSB of OTG kabel (USB a female naar microUSB man). Het is veel rendabeler zijn voor mij te gebruiken OTG dan het schild van bluetooth.
Een snelle blik op de opensource gemeenschap, ik struikel over deze github https://github.com/dtbaker/android-arduino-usb-se... ik denk dat werd vertakt van https://github.com/dtbaker/android-arduino-usb-se... Veel dank aan de opensource leverden voor het toestaan van me snel om uit te proberen code voor USB seriële van android <> - arduino. Slechts een punt om op te merken, de baud-rate voor de android is 115200, zodat de arduino seriële op de dezelfde baudrate moet instellen.
combinatie van deel 1 en 2, heb ik een regeling bedacht voor mijn 3D scannen kit. Arduino zet de draaitafel voor 15degrees, Stuur ASCII-tekens naar Androïde apparaat om een foto te nemen
De code voor de arduino is hier
#include <Servo.h> Servo myservo; int buttonPin = 3; int buttonState = 0; void setup() { pinMode(buttonPin, INPUT); Serial.begin(115200); //myservo.attach(9); // myservo.writeMicroseconds(1500); // set servo to mid-point } void loop() { moveServo(); buttonState = digitalRead(buttonPin); while(buttonState!=HIGH){ //infinite loop untill buton press to restart cycle } }//end loop void sendSerial(){ Serial.print("AAA");//tell android to take picture delay(2000);//guesstimate time for picture taken }//end sendSerial void moveServo(){ for(int i = 0; i < 31; i ++){ myservo.attach(9); scheduleStop(); delay(10000);//let camera complete picture taking sendSerial(); }//end for }//end moveServo void scheduleStop(){ myservo.writeMicroseconds(1000);//run delay(100);//100msec is about 15deg myservo.detach();//stop }//end scheduleStop
Een ander punt om op te merken: de seriële data ontvangen op android te bewijzen van de veronderstelling dat it's gonna worden hetzelfde als per ontvangen op hyper terminal wilt afdrukken. Ik leerde het de harde manier.