Sixpence 3D scanning kit (2 / 5 steg)
Steg 2: Del 2: seriell kommunikation
delar som behövs: android-enhet (API nivå 17 och framåt), OTG kabelMotvillig ganska jag att köpa en bluetooth sköld för arduino för kommunikation. Dessutom använder jag en android-telefon med android 4.3 (API nivå 19). I denna speciella version stöder den direkt USB-anslutning från säga tangentbord eller mus till android telefonen via microUSB eller OTG kabel (USB-typeA kvinna till microUSB hane). Det är mycket mer kostnadseffektivt för mig att använda OTG än bluetooth sköld.
En snabb titt på opensource gemenskapen, jag snubbla på denna github https://github.com/dtbaker/android-arduino-usb-se... tror jag var kluven från https://github.com/dtbaker/android-arduino-usb-se... Många tack vare öppen källkod bidragsgivare för att tillåta mig att snabbt testa koden för USB följetong från android <> - arduino. Bara en punkt att notera, baudhastighet för android är 115200, så arduino måste ställa följetong på samma vilket baudvärde.
kombinera del 1 och 2, har jag utarbetat ett system för min 3D scanning kit. Arduino stänga skivtallriken för 15degrees, skicka ASCII-tecken till android enhet att ta en bild
Koden för arduino är här
#include < Servo.h >
Servo myservo;
int buttonPin = 3;
int buttonState = 0;
void setup()
{
pinMode (buttonPin, ingång);
Serial.BEGIN(115200);
myservo.attach(9);
myservo.writeMicroseconds(1500); Ställ in servo till mittpunkt
}
void loop() {
moveServo();
buttonState = digitalRead(buttonPin);
While(buttonState!=High) {
oändlig loop tills buton tryck för att starta om cykeln
}
} //end loop
void sendSerial() {
Serial.Print ("AAA"), //tell android att ta bild
fördröjning (2000), //guesstimate tid för bild tagen
} //end sendSerial
void moveServo() {
för (int jag = 0; jag < 31; jag ++) {
myservo.attach(9);
scheduleStop();
fördröjning (10000); //let kamera fullständig bild med
sendSerial();
} //end för
} //end moveServo
void scheduleStop() {
myservo.writeMicroseconds (1000); //run
fördröjning (100); //100msec handlar om 15deg
myservo.detach (); //stop
} //end scheduleStop
En annan punkt att notera: skriva ut den seriella data mottagen android att bevisa antagandet att det kommer att vara samma som per fick på hyper terminal. Jag lärde mig den hårda vägen.