Komma igång med avstånd sensorer och Arduino (2 / 8 steg)
Steg 2: Skapa ett diagram med en LV-MaxSonar
Vi ville se hur en graf skulle gå när man läser objekt i ett rum. För att göra Läs hade vi till physicaly flytta MaxSonar. När du placerar Arduino och MaxSonar mot golvet lyckats det göra avläsningar av golvet. Så för att göra detta arbete med digitala Läs du placera den på minst 30 cm över golvet. Som du ser på bilden av grafen det ibland har problem att mäta avstånd.
Fritzing:
Se den första bilden.
Bearbetar koden:
/ * Bearbetning koden för detta exempel < br >
Graphing skiss
Detta program tar ASCII-kodade strängar
från den seriella porten på 9600 baud och grafer dem. Det förväntar sig värdena i de
intervallet 0 till 1023, följt av en newline, eller newline och transport tillbaka
Skapad 20 Apr 2005
Uppdaterad 18 Jan 2008
av Tom Igoe
Denna exempelkod är offentlig.
*/
import processing.serial.*;
Seriella myPort; Den seriella porten
int xPos = 1; horisontellt läge av grafen
Ogiltiga inställningar () {
Ange fönstrets storlek:
storlek (400, 300);
Lista över alla tillgängliga seriella portar
println(Serial.list());
Jag vet att den första porten i listan följetong på min mac
är alltid min Arduino, så jag öppnar Serial.list() [0].
Öppna oavsett port är den du använder.
myPort = ny följetong (denna, Serial.list() [5], 9600);
inte generera ett serialEvent() om du inte får ett radmatningstecken:
myPort.bufferUntil('\n');
Ange inledande bakgrund:
Background(0);
}
void Rita () {
allt händer i serialEvent()
}
void serialEvent (Serial myPort) {
få den ASCII-strängen:
InString sträng = myPort.readStringUntil('\n');
om (inString! = null) {
rensa bort alla blanksteg:
inString = trim(inString);
konvertera till en int och karta till skärmhöjd:
flyta inByte = float(inString);
inByte = karta (inByte, 0, 1023, 0, höjd);
Rita linjen:
stroke(127,34,255);
linje (xPos, höjd, xPos, höjd - inByte);
vid kanten av skärmen, gå tillbaka till början:
om (xPos > = bredd) {
xPos = 0;
Background(0);
}
annat {
öka den vågräta positionen:
xPos ++;
}
}
}
Vi hittade koden här: http://arduino.cc/en/Tutorial/Graph (Arduino, 09.10.14)
Arduino kod:
Ursprungliga författaren: Bruce Allen < br > / / datum: 23/07/09
Ändras av Marte och Runar ha 09/10/14, att bara cm som utgång och att passa bearbetning koden för en graf
Digital stift 7 för läsning i puls bredd från MaxSonar enheten.
Denna variabel är en konstant eftersom den PIN-kod inte ändras under hela utförandet av denna kod.
CONST int pwPin = 7.
variabler som behövs för att lagra värden
lång puls, tum, cm;
int utgång;
void setup() {
Detta öppnar upp en seriell anslutning till skjuta resultaten tillbaka till PC konsolen
Serial.BEGIN(9600);
}
void loop() {
pinMode (pwPin, ingång);
Används för att läsa i den puls som skickas av MaxSonar enheten.
Puls bredd representation med en skalfaktor av 147 uS per tum.
puls = pulseIn (pwPin, hög);
147uS per tum
inches = puls/147;
ändra tum till centimeter
cm = inches * 2.54;
Serial.Print(inches);
Serial.Print ("in");
Serial.Print(cm);
Serial.Print("cm");
Serial.println();
output = map(cm,0,645,0,1023);
Serial.println(output);
Delay(1);
}
Vi hittade koden här, under PW: http://playground.arduino.cc/Main/MaxSonar (Allen, 09.10.14)
Resultatet är bara cm (cm och tum), och produktionsvärden ändras på grund av värdena i diagrammet.