Lærerveiledning - Ultralydsensor
Skrevet av: Martin Ertsås & Morten Minde Neergaard
Informasjon til veiledere
Læringsmål
Oppgaven «Ultralydsensor» introduserer flere konsepter:
-
Bruk av ultralydsensor
-
Seriellkonsoll
Koblingsskjema
Elevene skal allerede ha løst en del oppgaver før de begynner på denne, men hittil alltid fått koblingsskjema utlevert. Denne oppgaven kan være en god anledning til å la dem prøve å koble opp komponentene uten skjema. Det kan dog være greit å ha et koblingsskjema eller tre i bakhånd for å dele ut:
Hjelp til 7-segment-utfordringen
I oppgaven 7-Segment Display har vi laget koden som kan vise et tall mellom 0 og 9 på et display. Koden under vil bare skrive ut «Om du hadde hatt et display burde det vist tallet (tall)» om og om igjen på seriellkonsollet.
const auto ekko = 2; // Echo pin
const auto sender = 3; // Trig pin
const auto lydens_hastighet = 0.034029; // 340.29 m/s
void setup() {
Serial.begin(9600);
pinMode(ekko, INPUT);
pinMode(sender, OUTPUT);
digitalWrite(sender, LOW);
}
void loop() {
digitalWrite(sender, HIGH);
delayMicroseconds(5);
digitalWrite(sender, LOW);
auto tid = pulseIn(ekko);
auto avstand = (tid * hastighet) / 2;
auto syvsegment = map(avstand, 0, 127, 0, 9);
Serial.print("Om du hadde hatt et display burde det vist tallet ");
Serial.println(constrain(syvsegment, 0, 9));
delay(100);
}
map
vil lineært skalere avstand
fra verdiområdet 0-127 til en verdi fra 0 til 9. En avstand på over 127 cm vil gi høyere verdier enn 9.
Tallet 127 cm er litt tilfeldig valgt som et tall som kan gi mening for å oppdage gjenstander rundt pulten. Ultralydsensoren skal kunne «se» opp til 4 meter fremfor seg, men da må de være store og flate (f.eks. en vegg).
For formelen brukt i map
, se referansen for hos arduino.cc. Dette kan være relevant om man vil vinkle denne oppgaven inn mot matematikk.
constrain
vil her gjøre at alle verdier høyere enn 9 vil bli satt til 9.
Lisens: CC BY-SA 4.0
Forbedre denne siden
Funnet en feil? Kunne noe vært bedre?
Hvis ja, vennligst gi oss tilbakemelding ved å lage en sak på Github eller fiks feilen selv om du kan. Vi er takknemlige for enhver tilbakemelding!