4. FSR¶
Seriell monitor¶
Seriell monitor: platsen där du kan få Arduino att prata genom en seriell port | |
---|---|
Den seriella monitorn låter oss få Arduino att prata. Eller mer exakt: att denna text skickas till den seriella monitorn. Den seriella monitorn visar denna text på din dator.
Anslut endast Arduino¶
Först ansluter vi bara en Arduino:
Jag tycker att det här borde fungera :-)
Den seriella bildskärmen går via USB-kabeln mellan Arduino till dator | |
---|---|
\pagebreak
Kod: Serial Monitor¶
Serial.begin(9600); |
'Bästa dator, låt Arduino prata med 9600 bitar per sekund' |
Serial.print("Hej"); |
'Bästa dator, låt Arduino säga ordet 'Hej'' |
Serial.println("Hej"); |
'Bästa dator, låt Arduino säga ordet 'Hej' och starta en ny rad' |
Kommandon 1¶
- Ladda upp programmet. I Arduino IDE, klicka på "Serial Monitor" uppe till höger. Vad ser du?
- Kan du ändra texten till "Hej Richel" (eller ditt eget namn?)
- Ändra
Serial.println
tillSerial.print
. Vad ser du? - Ändra texten
Serial.begin(9600)
tillSerial.begin(4800)
. Vad ser du? Varför?
\pagebreak
Svar 1¶
- Den seriella monitorn visar en extra rad varje sekund, med texten "Hej"
- Ändra raden
Serial.println("Hello");
tillSerial.println("Hello Ledge");
- Orden kommer en efter en, istället för en efter en
- Nu visar den seriella monitorn oläsbar text. Detta beror på att Arduino är långsammare att texta skicka till din dator (4800), sedan läser din dator texten (9600)
\pagebreak
Ansluter FSR utan LED¶
FSR betyder "Force Sensitive Resistance" | |
---|---|
Först ansluter vi bara en FSR:
Om det inte finns någon FSR, använd en LDR | |
---|---|
\pagebreak
Kod: läs FSR med seriell monitor¶
Med denna kod mäter vi värdet på FSR:
void setup()
{
pinMode(A0, INPUT);
Serial.begin(9600);
}
void loop()
{
Serial.println(analogRead(A0));
delay(100);
}
Serial.println(analogRead(A0)) |
'Bästa dator, visa värdet på stiftet A0 på den seriella monitorn' |
Kommandon 2¶
- Ladda upp programmet. I Arduino IDE, klicka på "Serial Monitor" uppe till höger. Vad ser du?
- Tryck på FSR med fingrarna (eller, med en LDR: håll fingret över LDR) medan du tittar på den seriella monitorn. Vad ser du?
- Ändra
Serial.println
tillSerial.print
. Vad ser du? - Ändra texten
Serial.begin(9600)
tillSerial.begin(4800)
. Vad ser du? Varför? - Ta bort kabeln till
A0
. Ja, ta bort kabeln mellanA0
och LDR. Titta på den seriella monitorn. Vad ser du?
Motståndet mellan A0 och LDR kallas ett 'Pull Down'-motstånd | |
---|---|
\pagebreak
Lösningar 2¶
- Du kommer att se ett tal från noll till 1024, beroende på värdet på FSR
- Du ändrar siffrorna
- Alla nummer kommer efter varandra
- Nu visar den seriella monitorn oläsbar text. Detta beror på att Arduino är långsammare att texta skicka till din dator (4800), sedan läser din dator texten (9600)
- Nu kommer du att se siffran ändras slumpmässigt. Detta kallas en flytande ingång
Ett 'Pull Down'-motstånd förhindrar en flytande ingång | |
---|---|
Ansluter FSR med LED, på/av¶
"Kraftkänsligt motstånd" betyder "Kraftberoende motstånd" | |
---|---|
Nu ansluter vi även en LED:
\pagebreak
Svara på FSR, på/av¶
Nu ska vi få lysdioden att reagera på lysdioden:
void setup()
{
pinMode(A0, INPUT);
pinMode(13, OUTPUT);
}
void loop()
{
if (analogRead(A0) < 512)
{
digitalWrite(13, HIGH);
}
else
{
digitalWrite(13, LOW);
}
delay(100);
}
if (analogRead(A0) < 512) {} |
'Bästa dator, om A0 läser mindre än 2,5 volt, sätt det inom parentes. |
Uppdrag 3¶
- Vad händer om du ökar
512
? Vad händer om du sänker512
? - Se till att den seriella monitorn också mäter och visar "A0". Vilket nummer mäter FSR? i fred?
- Se till att den seriella monitorn visar ordet "ON" när lysdioden tänds, och att ordet "OFF" när lysdioden är avstängd
\pagebreak
Lösningar 3¶
- Om
512
ändras till en siffra som är för hög, kommer lampan alltid att lysa oavsett hur hårt/mjukt du trycker. Om512
ändras till ett för högt nummer kommer lampan alltid att vara släckt, oavsett hur hårt/mjukt du trycker - För detta använd koden från föregående kommando: lägg till i
setup
-funktionenSerial.begin(9600);
, iloop
-funktionen lägg tillSerial.println(analogRead(A0));
. Värdet du kommer att se är beroende på motstånd, FSR och situation - Detta kan göras genom att sätta
Serial.println("ON");
i den första delen avif
-satsen. SättSerial.println("OFF");
i den andra delen avif
-satsen.
void setup()
{
pinMode(A0, INPUT);
pinMode(13, OUTPUT);
Serial.begin(9600);
}
void loop()
{
Serial.println(analogRead(A0));
if (analogRead(A0) < 512)
{
digitalWrite(13, HIGH);
Serial.println("AAN");
}
else
{
digitalWrite(13, LOW);
Serial.println("UIT");
}
delay(100);
}
\pagebreak
Svara på FSR, Dim¶
Nu ska vi få lysdioden att reagera på lysdioden. Denna gång dimper lysdioden.
void setup()
{
pinMode(A0, INPUT);
pinMode( 9, OUTPUT);
Serial.begin(9600);
}
void loop()
{
const int fsr_waarde = analogRead(A0);
Serial.print("FSR: ");
Serial.println(fsr_waarde);
const int led_waarde = map(fsr_waarde, 0, 1023, 0, 255);
Serial.print("LED: ");
Serial.println(led_waarde);
analogWrite(led_waarde, 9);
delay(100);
}
analogWrite( 0, 9) |
'Bästa dator, stäng av stift 9' |
analogWrite(128, 9) |
'Bästa dator, vrid stift 9 till halvfullt' |
analogWrite(255, 9) |
'Bästa dator, slå på stift 9 fullt ut' |
map(analogRead(A0),0,1023,0,255) |
'Bästa dator, läs spänningen för A0 . Detta är ett värde från 0 till 1023. Konvertera det avlästa värdet mellan 0 och 255.'. |
Uppdrag 4¶
- Lysdioden är på ett annat stift. Titta i koden och anslut lysdioden till rätt stift
- Vilka stift kan vi använda för att dämpa en lysdiod?
\pagebreak
Lösningar 4¶
- Lysdioden måste nu kopplas till stift 9
- Alla stift med en våg (
~
) före numret. Dessa är 3, 5, 6, 9, 10, 11.
Uppgift 5¶
Anslut två lysdioder till stift 12 och 13. När FSR är i vila ska ingen lysdiod lysa. Om du trycker försiktigt på FSR, en LED tänds. Om du trycker hårt på FSR, två.
Tips: använd två if -satser |
|
---|---|
\pagebreak
Lösning 5¶
Siffrorna i "if"-satsen måste vara korrekt inställda.
void setup()
{
pinMode(A0, INPUT);
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
Serial.begin(9600);
}
void loop()
{
Serial.println(analogRead(A0));
if (analogRead(A0) < 256)
{
digitalWrite(13, HIGH);
}
if (analogRead(A0) < 512)
{
digitalWrite(12, HIGH);
}
delay(100);
}
Uppgift 6¶
Du kan också få en LED att reagera på en FSR genom att bleka/dimma den
- Vilket kommando gjorde du det med igen?
- Är det möjligt med vilken stift som helst? Om inte, med vilket ja/nej?
- Vilket är det högsta värdet som du kan tända en LED med?
- Vilket är det högsta värdet FSR kan mäta?
- Antag att du vill tända en lysdiod beroende på ett FSR-värde. Hur kunde du göra detta?
- Hur får man kod att göra en division?
- Slå på lysdioden beroende på FSR-värdet
\pagebreak
Lösningar 6¶
- Du kan tona en lysdiod med
analogWrite
, till exempelanalogWrite(11, 255);
- Du kan bara dimma en lysdiod med PWM-stift. Det här är stiften med en våg
(
~
) bredvid deras nummer. På Arduino Uno är dessa stift 3, 5, 6, 9, 10 och 11 - Med
analogWrite
kan du ge upp till 255, till exempelanalogWrite(11, 255);
- Med
analogRead
kan du mäta upp till 1023 - Du läser ett värde, dividerar det med fyra (1024 dividerat med 256 är fyra) och låter lysdioden lysa så
- Med divisionsfältet,
/
. - Se nedan. Glöm inte att sätta en lysdiod på stift 11
void setup()
{
pinMode(A0, INPUT);
pinMode(11, OUTPUT);
Serial.begin(9600);
}
void loop()
{
analogWrite(11, analogRead(A0) / 4);
delay(100);
}
analogWrite(11, analogRead(A0) / 4) |
'Bästa dator, dämpa stift 11 till värdet av stift A0 (diva detta med fyra)' |
\pagebreak
Einorder¶
- Anslut fyra lysdioder: en vit, en röd, en gul och en grön
- När FSR är i vila ska ingen lysdiod lysa.
- När du trycker lätt på FSR tänds den gröna lysdioden
- Om du trycker hårdare på FSR kommer de gröna och gula lysdioderna att tändas
- När du trycker hårt på FSR tänds de gröna, gula och röda lysdioderna
- Den vita lysdioden lyser starkare och mjukare beroende på FSR
Om du inte har en vit LED, använd en annan färg.