Teleskopet controller (2 / 2 steg)
Steg 2: Steg två controller
Arduino ansluten till telefonen
[quote]
#include #include < [color = #CC6600] SPI [/ Color] .h >
[color = #7E7E7E] / / varje objekt på skärmen behöver deklareras som denna [/ Color]
[color = #CC6600] utan laga kraft [/ Color] [color=#CC6600][b]setup[/b][/color]() {
setInitialData(); [color = #7E7E7E] / / Call denna funktion för att definiera dina objekt [/ Color]}
[color = #CC6600] utan laga kraft [/ Color] setInitialData()
{
bluerange.setType(DATA_OUT); [color = #7E7E7E] / / definierar objekt som en display låda [/ Color] nameOfObjectA.setLocation(0,0,FULL); [color = #7E7E7E] / / första rad, längst till vänster, full bredd [/ Color] nameOfObjectA.setTitle ([color = #006699] "Detta är för titeln bar"[/color]); nameOfObjectA.setData ([color = #006699] "Detta är för data area"[/color]); nameOfObjectA.setUnit ([color = #006699] "Detta är tänkt för textområdet längst ner i din box"[/color]);
nameOfObjectB.setId(1); [color = #7E7E7E] / / varje objekt måste tilldelas ett unikt ID-nummer [/ Color] nameOfObjectB.setType(DATA_OUT); [color = #7E7E7E] / / definierar objekt som en display låda [/ Color] nameOfObjectB.setLocation(1,0,FULL); [color = #7E7E7E] / / andra raden, vänster, full bredd [/ Color] nameOfObjectB.setTitle([color=#006699]"Hello"[/color]); nameOfObjectB.setData ([color = #006699] värld!" [/ Color]); [color = #7E7E7E] / / setUnit är tillval. Du behöver inte Visa det hela tiden [/ Color]
}
[color = #CC6600] utan laga kraft [/ Color] [color=#CC6600][b]loop[/b][/color]() {nameOfObjectA.update(); [color = #7E7E7E] / / Call update() för att göra det visas på skärmen [/ Color] nameOfObjectB.update(); [color = #7E7E7E] / / och uppdatera sin display [/ Color]
[color=#CC6600]delay[/color](500); [color = #7E7E7E] / / fördröjning för 500ms (0,5 sekunder) innan du upprepar koden ovan [/ Color]}
[color = #CC6600] utan laga kraft [/ Color] [color=#CC6600][b]setup[/b][/color]() {Andee. [ Color=#CC6600]BEGIN[/Color](); [color = #7E7E7E] / / Setup kommunikation mellan Annikken Andee och Arduino [/ Color] Andee. [color=#CC6600]clear[/color](); [color = #7E7E7E] / / rensa skärmen på någon tidigare visar [/ Color] aktuellaposition = 0; [color = #7E7E7E] / / initialisera ställning till 0 [/ Color] theServo. [color=#CC6600]attach[/color](servoPin); [color = #7E7E7E] / / berätta för Arduino som pin-servo är ansluten till [/ Color] theServo. [color=#CC6600]write[/color](currentPosition); [color = #7E7E7E] / sätta servo att placera 0 [/ Color] setInitialData(); [color = #7E7E7E] / / definiera objekttyper och deras utseende [/ Color]} [färg = #CC6600] utan laga kraft [/ Color] setInitialData() {btnTurnLeft.setId(0); btnTurnLeft.setType(BUTTON_IN); btnTurnLeft.setLocation(0,0,HALF); btnTurnLeft.setTitle ([färg = #006699] "vända Left"[/color]); btnTurnLeft.requireAck([color=#CC6600]false[/color]); [color = #7E7E7E] / / du behöver denna linje för flera knapp pressar [/ Color] btnTurnRight.setId(1); btnTurnRight.setType(BUTTON_IN); btnTurnRight.setLocation(0,1,HALF); btnTurnRight.setTitle ([color = #006699] "vända Right"[/color]); btnTurnRight.requireAck([color=#CC6600]false[/color]); [color = #7E7E7E] / / du behöver denna linje för flera knapp pressar [/ Color] btnCustomPosition.setId(2); btnCustomPosition.setType(KEYBOARD_IN); [color = #7E7E7E] / / uppsättningar objekt som en text input knappen [/ Color] btnCustomPosition.setLocation(1,0,FULL); btnCustomPosition.setTitle ([color = #006699] "snabbt gå till anpassad Position (0 - 180)"[/color]); btnCustomPosition.setKeyboardType(ANDEE_NUMERIC_A);
displaybox.setId(3); displaybox.setType(DATA_OUT); [color = #7E7E7E] / / uppsättningar objekt som en text input knappen [/ Color] displaybox.setLocation(2,0,FULL); displaybox.setTitle ([color = #006699] "nuvarande Position"[/color]); displaybox.setData(0); } [color = #CC6600] utan laga kraft [/ Color] [color=#CC6600][b]loop[/b][/color]() {[color = #CC6600] om [/ color] (btnCustomPosition. [ Color=#CC6600]isPressed[/Color]()) {memset (userPos, 0x00, 4); [color = #7E7E7E] / / tömma innehållet i strängen innan de får användaren input [/ Color] btnCustomPosition.ack(); [color = #7E7E7E] / / erkänna tryck på knapp eller annat telefonen kommer att lämnas väntar [/ Color] btnCustomPosition.getKeyboardMessage(userPos); [color = #7E7E7E] / / Visa tangentbord och lagra indata i userInput [/ Color]
newPosition = atoi(userPos); [färg = #7E7E7E] / / konvertera strängvärde till heltalsvärde [/ Color] [color = #7E7E7E] / / tala Arduino x Andee vad du gör om användaren nycklar i löjliga värden [/ Color] [color = #CC6600] om [/ color] (newPosition < 0) newPosition = 0; [color = #CC6600] om [/ color] (newPosition > 180) newPosition = 180; aktuellaposition = newPosition; [color = #7E7E7E] / / Detta är hur du gör en snabb tur [/ Color] theServo. [color=#CC6600]write[/color](currentPosition); [color = #7E7E7E] / / slå servo till ny position [/ Color] displaybox.setData(currentPosition); [color = #7E7E7E] / / Uppdatera ny position [/ Color]} [color = #CC6600] om [/ Color] (btnTurnLeft.getButtonPressCount() > 0) [färg = #7E7E7E] / / så länge vänster knapp trycks [/ Color] {btnTurnLeft.ack(); [color = #7E7E7E] / / erkänna tryck på knapp eller annat telefonen kommer att lämnas väntar [/ Color] newPosition = aktuellaposition - turnResolution; [color = #7E7E7E] / / Ställ ny position [/ Color] [color = #CC6600] om [/ color] (newPosition < 0) newPosition = 0; [färg = #7E7E7E] / / ange 0 om ny plats går under 0 [/ Color] [color = #7E7E7E] / / Detta är hur du gör en långsam sväng: [/ color] [färg = #CC6600] för [/ color] (aktuellaposition; aktuellaposition > newPosition; aktuellaposition--) {theServo. [ Color=#CC6600]Write[/Color](currentPosition); displaybox.setData(currentPosition); [color = #7E7E7E] / / uppdatera servo placering på skärmen visar det [/ Color] displaybox.update(); [color=#CC6600]delay[/color](15); [color = #7E7E7E] / / kan du ändra försening värde. Större värde betyder långsammare vänder [/ Color] [color = #7E7E7E] / / inte ange din försening till 0 när du gör detta. Du kör möjligheten att [/ Color] [color = #7E7E7E] / / skada servo. Eller du kan bara göra det blir mer cranky. [/ Color]} } [color = #CC6600] om [/ Color] (btnTurnRight.getButtonPressCount() > 0) [color = #7E7E7E] / / så länge rätt knapp trycks [/ Color] {btnTurnRight.ack(); [color = #7E7E7E] / / erkänna tryck på knapp eller annat telefonen kommer att lämnas väntar [/ Color] newPosition = aktuellaposition + turnResolution; [color = #7E7E7E] / sätta ny position [/ Color] [color = #CC6600] om [/ color] (newPosition > 180) newPosition = 180; [color = #7E7E7E] / / Set till 180 om ny plats går över 180 [/ Color] [color = #CC6600] för [/ color] (aktuellaposition; aktuellaposition < newPosition; aktuellaposition ++) {theServo. [ Color=#CC6600]Write[/Color](currentPosition); displaybox.setData(currentPosition); [color = #7E7E7E] / / uppdatera servo placering på skärmen visar det [/ Color] displaybox.update(); [color=#CC6600]delay[/color](15); [color = #7E7E7E] / / kan du ändra försening värde. Större värde betyder långsammare vänder [/ Color]}} btnTurnLeft.update(); [color = #7E7E7E] / / alltid kom ihåg att uppdatera så att nytt innehåll kommer att visas [/ Color] btnTurnRight.update(); btnCustomPosition.update(); displaybox.Update(); [color=#CC6600]delay[/color](500); }
[/quote]