Använda trycksensorn

Trycksensorn detekterar om knappen på sensorns framsida är intryckt. Med trycksensorn kan du till exempel detektera om roboten kör in i något. Du kan också utlösa en händelse genom att själv trycka på sensorns knapp.
Trycksensorn kan indikera om den är intryckt eller inte. Däremot kan den inte mäta hur länge knappen hålls ner eller hur hårt den trycks in. Trycksensorn genererar logiska data, dvs. värdet Sant eller värdet Falskt. Trycksensorknappens position är densamma som dess status. Om knappen är intryckt är statusen Sant. Är knappen uppsläppt är statusen Falskt.

Trycksensorn kan också användas för att hålla reda på om en knapp har tryckts in och sedan släppts upp vid ett tidigare tillfälle. En intryckning som följs av en uppsläppning är en s.k. snabbtryckning. Den används för att detektera till exempel om någon trycker på knappen med fingret. Mer information finns under Förstå begreppet ”snabbtryckt”.
Trycksensorns data
Trycksensorn genererar följande data:
DataTypAnteckningar
Status LogikSant om knappen är intryckt, annars Falskt.
Intryckt LogikSant om intryckt, annars Falskt (samma som Status).
Uppsläppt LogikFalskt om intryckt, annars Sant (motsatsen till Status).
Snabbtryckt LogikSant om knappen har tryckts in och släppts upp vid ett tidigare tillfälle. Därefter, om en ny snabbtryckning ska lagras, måste en ny intryckning och uppsläppning utföras.
Exempel med ”intryckt”
Nedan följer några exempel på hur du kan använda trycksensorns data för ”intryckt”.
Exempel 1: Kör tills en trycksensor trycks in
Det här programmet får roboten att köra rakt fram tills en trycksensor trycks in. Då stannar roboten. Blocket Vänta i läget Trycksensor – Jämför – Tryck används för att testa om intryckning sker.
Tips och trick
Kom ihåg att använda På-läget för blocket Kör – rattstyrning, om roboten ska åka medan ett sensorvärde inväntas.
Exempel 2: Köra en motor när en trycksensor hålls in (metod 1)
Med det här programmet körs en motor när trycksensorn hålls ner. Motorn stannar när trycksensorn släpps upp. Ett förgreningsblock i läget Trycksensor – Jämför – Tryck används för att testa om intryckning sker. Resultatet av testet används för att välja om motorn ska stängas av eller vara på. Testet upprepas fortlöpande, i en loop.
Exempel 3: Enhetsstatuslampa som pulserar när en trycksensor hålls in
Med det här programmet tänds enhetsstatuslampan med orange färg, och skenet pulserar när trycksensorn hålls in. Blocket Trycksensor i mätläge används för att hämta trycksensorns status. Via en logikdataledning kopplas resultatet till pulsingången på ett enhetsknappblock.
Exempel med ”uppsläppt”
Nedan följer några exempel på hur du kan använda trycksensorns data för ”uppsläppt”.
Exempel 4: Ljud vid tryckning på trycksensorn
Med det här programmet ljuder en kort ton vid varje sensortryckning. Endast ett kort ljud hörs vid varje tryckning. Blocket Vänta i läget Trycksensor – Jämför – Tryck används för att kontrollera om sensorn trycks in. Därefter används ytterligare ett vänteblock för att vänta tills uppsläppet sker, innan loopen fortsätter.
Tips och trick
Om du raderar den programdel som väntar på uppsläppet, upprepas ljudet medan trycksensorn hålls in. Det beror på att den del som väntar på intryckning fortsätter direkt till nästa block om trycksensorn redan har tryckts in. Prova!
Exempel 5: Köra en motor när en trycksensor hålls in (metod 2)
Med det här programmet körs en motor när trycksensorn hålls ner. Motorn stannar när trycksensorn släpps upp. Blocket Vänta i läget Trycksensor – Jämför – Tryck används för att vänta tills intryckning sker så att motorn startas. Därefter används ytterligare ett vänteblock för att vänta tills uppsläppet sker, innan motorn stoppas. Processen upprepas fortlöpande, i en loop.
Tips och trick
Det här programmet gör samma sak som i exempel 2 ovan, men med en annan metod.
Förstå begreppet ”snabbtryckt”
Trycksensorn ger information om huruvida den är intryckt eller uppsläppt för tillfället. Därutöver kan den också hålla reda på om den vid något tidigare tillfälle har både tryckts in och släppts upp, en händelse som vi kallar för ”snabbtryckt”. Därmed kan du enkelt ta reda på om trycksensorn har använts som tryckknapp. Du behöver inte göra ett program som fortlöpande kontrollerar om sensorn är intryckt och sedan väntar på en uppsläppning.

När en trycksensor indikerar att den har snabbtryckts, måste den snabbtryckas igen för att indikera snabbtryckning nästa gång. Det innebär att du enkelt kan säkerställa till exempel att varje tryckning motsvarar en åtgärd som bara inträffar en gång.

Tabellen nedan innehåller ett exempel där en trycksensor trycks in och släpps upp två gångar i en serie av steg. I tabellen visas resultatet för ett program som testar statusen för Intryckt, Släppt eller Snabbtryckt efter varje åtgärd.
StegÅtgärdIntrycktUppsläpptSnabbtryckt
1 Knapp startas uppsläpptFalsktSantFalskt
2 Knappen är intrycktSantFalsktFalskt
3 Knappen är uppsläpptFalsktSantSant
4 Knappen är fortfarande uppsläppt och programmet testar trycksensorn på nyttFalsktSantFalskt
5 Knappen trycks in en andra gångSantFalsktFalskt
6 Knappen är intryckt och programmet testar trycksensorn på nyttSantFalsktFalskt
7 Knappen är uppsläpptFalsktSantSant
8 Knappen är fortfarande uppsläppt och programmet testar trycksensorn på nyttFalsktSantFalskt
När knappen hålls ner fortsätter trycksensorn att indikera ”intryckt” vid varje kontroll. Men när knappen släpps upp indikerar sensorn ”snabbtryckt” endast vid den första snabbtryckskontrollen. ”Snabbtryckt” indikeras inte igen förrän knappen har snabbtryckts en gång till.
Exempel med ”snabbtryckt”
Nedan följer några exempel på hur du kan använda trycksensorns data för ”snabbtryckt”.
Exempel 6: Ändra displayen när trycksensorn trycks in
Det här programmet får EV3-enhetens display att visa ”noll”, följt av ”ett” och sedan ”två”. Displayen ändras varje gång som trycksensorn snabbtrycks (trycks in och sedan släpps upp).
Tips och trick
Om du ändrar programmets vänteblock så att programmet testar statusen för intryckt i stället för snabbtryckt, upptäcker du att displayen ändras från ”noll” direkt till ”två”. ”Ett” hoppas över. Prova! Det beror på att displayblocken körs så snabbt att när nästa ”intryckt-kontroll” görs håller ditt finger fortfarande ner knappen (från den första knapptryckningen). Den andra väntedelen avslutas omedelbart. Vid kontroll av statusen Snabbtryckt hinner bara ett test utföras för varje tryckning.
Exempel 7: Kör i ett mönster tills trycksensorn trycks in
Det här programmet får roboten att upprepa ett körningsmönster (framåt och sedan svängning), tills en trycksensor trycks in. Sensorn fungerar därmed som stoppknapp på roboten. När trycksensorn har tryckts in stannar roboten efter nästa sväng. En loop i trycksensorläge används för att upprepa körningsmönstret tills trycksensorn snabbtrycks (trycks in och sedan släpps upp).
Tips och trick
Om du provar det här programmet med Intryckt i stället för Snabbtryckt, upptäcker du att intryckning av trycksensorn normalt sett inte får roboten att stanna. Prova! Det beror på att sensorn bara kontrolleras snabbt (i loopen) efter att de två flyttblocken har slutförts. Om du trycker in och släpper upp sensorn medan flyttblocken körs, registreras inte statusen Intryckt. Om Snabbtryckt används kommer sensorn ihåg att den vid ett tidigare tillfälle har tryckts in och sedan släppts upp.
Block och lägen för trycksensorn
I tabellen nedan visas samtliga programmeringsblock och lägen som du kan använda med trycksensorn.
BlockLägeAnvändning
VäntaTrycksensor – JämförVänta tills en trycksensor trycks in, släpps upp eller snabbtrycks.
VäntaTrycksensor – ÄndraVänta tills trycksensorns status ändras.
LoopTrycksensorUpprepa en blocksekvens tills trycksensorn trycks in, släpps upp eller snabbtrycks.
FörgreningTrycksensorVälj mellan två blocksekvenser beroende på om trycksensorn trycks in eller inte, släpps upp eller inte, snabbtrycks eller inte.
TrycksensorMätaHämta aktuell trycksensorstatus (intryckt eller inte) via en logikdataledning.
TrycksensorJämförTesta om trycksensorn trycks in, släpps upp eller snabbtrycks, och hämta resultatet via en logikdataledning.
DataloggningSe Dataloggning.
Tryck
Snabblänkar