<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="https://peda.net/:static/532/atom.xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>Vanha puhelin (Arduino gadget)</title>
<id>https://peda.net/id/9435ec503b5</id>
<updated>2019-03-13T08:27:22+02:00</updated>
<link href="https://peda.net/id/9435ec503b5:atom" rel="self" />
<link href="https://peda.net/joensuu/jm/lightabot-luonnos/pakopelit/ep/vpagl#top" rel="alternate" />
<logo>https://peda.net/:static/532/peda.net.logo.bg.svg</logo>
<rights type="html">&lt;div class=&quot;license&quot;&gt;Tämän sivun lisenssi &lt;a rel=&quot;license&quot; href=&quot;https://peda.net/info&quot;&gt;Peda.net-yleislisenssi&lt;/a&gt;&lt;/div&gt;&#10;</rights>

<entry>
<title>Vanha puhelin pakopelilaitteeksi!</title>
<id>https://peda.net/id/f50baa7e3b5</id>
<updated>2019-10-23T10:00:18+03:00</updated>
<link href="https://peda.net/joensuu/jm/lightabot-luonnos/pakopelit/ep/vpagl/vppl#top" />
<content type="html">&lt;b&gt;Vanha lankapuhelin on monella tapaa käyttökelpoinen ja mielenkiintoinen gadget.&lt;/b&gt; Se luo itsessään jo hauskaa ja jopa mystistä tunnelmaa. Vanhemmalle väelle tämä on lämminhenkinen tuulahdus menneisyydestä. Nuoremmille kyseessä on taas aika historiallinen laite, jota on jännittävä päästä kokeilemaan.&lt;br/&gt;&#10;&lt;br/&gt;&#10;Jos pelaajat ovat nuorempia henkilöitä, kannattaa laittaa puhelimen oheen käyttöohjeet. (esimerkiksi &lt;a href=&quot;https://www.wikihow.com/Dial-a-Rotary-Phone&quot; rel=&quot;noopener nofollow ugc&quot; target=&quot;_blank&quot;&gt;täältä&lt;/a&gt; nettisivulta.)&lt;br/&gt;&#10;&lt;br/&gt;&#10;Voit ohjelmoida puhelimen numeroavaruutta vapaasti. Alla on ohjelma, johon on ohjelmoitu yksi oikea viisi numeroinen puhelinnumero (12345), johon soittamalla ohjelma toistaa ennalta äänitetyn .wav tiedoston. Jos soitetaan väärään numeroon, käynnistyy toinen nauhoite. Tässä ideana oli, että puhelin oli yhden pulmatehtävän keskiössä - pelaajien piti selvittää oikea puhelinnumero kahdesta erilaisesta pulmatehtävästä. Puhelin sopisi myös erinomaisesti koko pakopelin keskiöön: jokaisesta pulmatehtävästä saisi uuden puhelinnumeron, johon pitäisi soittaa. Oikeaan numeroon soittaessa saa aina osan isompaa &amp;quot;pääkoodia&amp;quot;. Tämä pitäisi onnistua muokkaamalla nykyistä koodia, monistamalla sopivia kohtia.&lt;br/&gt;&#10;&lt;br/&gt;&#10;Puhelimella voi myös ohjata vaikkapa magneettilukkoa tai mitä vain. &amp;quot;Soita oikeaan numeroon ja oven lukko aukeaa&amp;quot;. &lt;br/&gt;&#10;​&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/PcqC2WhJeLw?rel=0&quot; allowfullscreen=&quot;allowfullscreen&quot;&gt;&lt;/iframe&gt;​&lt;br/&gt;&#10;&lt;b&gt;Puhelimen säätämäminen pakopelilaitteeksi on itseasiassa yllättävän helppoa.&lt;/b&gt; Sen sijaan ohjelmointi on hieman mutkikkaampi aloittelijalle. Toisaalta täältä löydät valmiin koodin, jossa on myös muutamia selityksiä. Voit kopioida koodin vapaasti.&lt;br/&gt;&#10;&lt;br/&gt;&#10;&lt;b&gt;Tarvikkeet:&lt;br/&gt;&#10;&lt;/b&gt;- Vanha toimiva kiekkomallinen lankapuhelin (Tässä käytetty Ericsonin puhelinta)&lt;br/&gt;&#10;- SD-kortti -moduli, SD-kortti, SD-kortin lukija (on monissa läppäreissä kiinteästi).&lt;br/&gt;&#10;- Arduino + USB-johto + läppäri&lt;br/&gt;&#10;- Kytkentäjohtoja, 3kpl alligaattorijohtoja&lt;br/&gt;&#10;- Ruuvimeisseli&lt;br/&gt;&#10;- johdon kuorintapihdit tms. (johdon kuorinta onnistuu myös veitsellä tai hampailla, mutta se ei ole ehkä suositeltavaa...)&lt;br/&gt;&#10;- Johtoliitin (yhdistä kaksi johtoa toisiinsa) tai kolvi. Nämä eivät välttämättömiä.&lt;br/&gt;&#10;&lt;br/&gt;&#10;1. Avaa puhelimen koppa avamaalla kiinnitysruuvi. Puhelimen kannen etuosassa on &amp;quot;klipsit&amp;quot; eli nosta peräosa ensin ja työnnä kanttaa avatessa hieman eteenpäin (muista myöhemmin suljettaessa nuo klipsit).&lt;br/&gt;&#10;&lt;span class=&quot;small&quot;&gt;&lt;a href=&quot;https://peda.net/joensuu/jm/lightabot-luonnos/pakopelit/ep/vpagl/vppl/img_1071-jpg#top&quot; title=&quot;IMG_1071.jpg&quot;&gt;&lt;img src=&quot;https://peda.net/joensuu/jm/lightabot-luonnos/pakopelit/ep/vpagl/vppl/img_1071-jpg:file/photo/0f691827f25462602ccf957b3ff841345a10b68a/IMG_1071.jpg&quot; alt=&quot;&quot; title=&quot;IMG_1071.jpg&quot; class=&quot;inline&quot; loading=&quot;lazy&quot;/&gt;&lt;/a&gt;&lt;/span&gt;&lt;br/&gt;&#10;&lt;br/&gt;&#10;2. Irroita puhelimenjohdon päässä oleva pistoke. Irroita johdot pistokkeesta. Voit heittää pistokkeen osat kierrätykseen, niitä ei enää tarvita. Näkyvillä pitäisi olla johdot: musta, punainen, vihreä ja keltainen. &lt;br/&gt;&#10;&lt;br/&gt;&#10;3. Katso puhelimen sisälle. Kiinnitä huomio yllä mainittuun puhelinjohtoon. Puhelimesta tähän pitäisi olla yhdistettynä punainen ja vihreä johto. Musta ja keltainen ovat kytkemättä, eivätkä ole näkyvissä. Kuori johtoa sen verran, että saat mustan johdon selvästi näkyviin. Kuori mustan johdon päätä. Tähän liitetään johto.&lt;br/&gt;&#10;&lt;span class=&quot;small&quot;&gt;&lt;a href=&quot;https://peda.net/joensuu/jm/lightabot-luonnos/pakopelit/ep/vpagl/vppl/img_1072-jpg#top&quot; title=&quot;IMG_1072.jpg&quot;&gt;&lt;img src=&quot;https://peda.net/joensuu/jm/lightabot-luonnos/pakopelit/ep/vpagl/vppl/img_1072-jpg:file/photo/d0d78160a95598b3a4a24d9df6380646b94908dc/IMG_1072.jpg&quot; alt=&quot;&quot; title=&quot;IMG_1072.jpg&quot; class=&quot;inline&quot; loading=&quot;lazy&quot;/&gt;&lt;/a&gt;&lt;/span&gt;&lt;br/&gt;&#10;&lt;br/&gt;&#10;4. Katso puhelimen toiselle puolelle. Näen siellä valkoisen johdon, joka on kiinnitetty puhelimessa liittimeen numero 10. Tämä on GND eli maa. Tästä pitäisi vetää johto äsken kuorimaasi mustaan johtoon. Itse liitin johdon kyseisen ruuvin alle ja sulatin vielä hieman tinaa kiinnikkeeksi. Kohdan 3 puhelinjohtoon liitin johdon pyörittämällä johdot keskenään ja vahvistin liitoksen tinalla. Johtoliittimet olisi varmasti parempi vaihtoehto.&lt;br/&gt;&#10;&lt;span class=&quot;small&quot;&gt;&lt;a href=&quot;https://peda.net/joensuu/jm/lightabot-luonnos/pakopelit/ep/vpagl/vppl/img_1073-jpg2#top&quot; title=&quot;IMG_1073.jpg&quot;&gt;&lt;img src=&quot;https://peda.net/joensuu/jm/lightabot-luonnos/pakopelit/ep/vpagl/vppl/img_1073-jpg2:file/photo/db18cd4e86865653f42ddec2e4fef8376bf99408/IMG_1073.jpg&quot; alt=&quot;&quot; title=&quot;IMG_1073.jpg&quot; class=&quot;inline&quot; loading=&quot;lazy&quot;/&gt;&lt;/a&gt;&lt;/span&gt;&lt;br/&gt;&#10;5. Tarkasta vielä, että johdoilla on jokin vedonpoisto. Kohdan 3 kuvasta näet, että puhelinjohtoon on lisätty nippuside. Kun kansi on kiinni ja johdosta vetää, veto kohdistuu ensin tuohon nippusiteeseen eikä johtoliitoksiin. Luurijohdossa on vedonpoisto valmiina (johto paksunee). Sulje puhelimen kansi, kiristä ruuvi.&lt;br/&gt;&#10;&lt;br/&gt;&#10;6. Kytke puhelinjohdon johtoihin alligaattorijohdot. Keltainen jää käyttämättä.&lt;br/&gt;&#10;&lt;span class=&quot;small&quot;&gt;&lt;a href=&quot;https://peda.net/joensuu/jm/lightabot-luonnos/pakopelit/ep/vpagl/vppl/img_1074-jpg3#top&quot; title=&quot;IMG_1074.jpg&quot;&gt;&lt;img src=&quot;https://peda.net/joensuu/jm/lightabot-luonnos/pakopelit/ep/vpagl/vppl/img_1074-jpg3:file/photo/f385dc0667b323cbb2d064d636495b286db338b7/IMG_1074.jpg&quot; alt=&quot;&quot; title=&quot;IMG_1074.jpg&quot; class=&quot;inline&quot; loading=&quot;lazy&quot;/&gt;&lt;/a&gt;&lt;/span&gt;&lt;br/&gt;&#10;&lt;br/&gt;&#10;6. Kytke alligaattorijohtojen toiseen päähän tavallinen kytkentäjohto ja yhdistä johdot:&lt;br/&gt;&#10;Vihreä: digital PIN 9&lt;br/&gt;&#10;Punainen: digital PIN 8&lt;br/&gt;&#10;Musta: GND&lt;br/&gt;&#10;&lt;br/&gt;&#10;7. Kytke SD-korttimoduli Arduinoon:&lt;br/&gt;&#10;CS: digital PIN 4&lt;br/&gt;&#10;SCK: digital PIN 13&lt;br/&gt;&#10;MOSI: digital PIN 11&lt;br/&gt;&#10;VCC: 5V&lt;br/&gt;&#10;GND: GND&lt;br/&gt;&#10;&lt;br/&gt;&#10;&lt;b&gt;Nyt kaikki tarvittavat kytkennät on tehty!&lt;/b&gt;&lt;br/&gt;&#10;&lt;br/&gt;&#10;Tallenna SD-kortille äänitiedosto (kytke siis kortti tietokoneeseen). Tiedoston tulee olla muodossa .WAV. Lisäksi tiedostoon kannattaa tehdä seuraavat muutokset &lt;a href=&quot;https://audio.online-convert.com/convert-to-wav&quot; rel=&quot;noopener nofollow ugc&quot; target=&quot;_blank&quot;&gt;online audio converterilla&lt;/a&gt;:&lt;br/&gt;&#10;- &lt;span&gt;Change bit resolution: 8bit&lt;br/&gt;&#10;&lt;/span&gt;- Change sampling rate: joko 8000Hz tai 11025Hz&lt;br/&gt;&#10;-&lt;span&gt;Change audio channels: Mono&lt;br/&gt;&#10;&lt;br/&gt;&#10;&lt;/span&gt;Nimeä tiedosto vastaamaan koodissa olevaa nimeä. Esimerkkikoodissa nimet ovat 1.WAV ja 2.WAV. Lataa tiedostot SD-kortille. Pistä kortti kiinni SD-korttimoduliin.&lt;br/&gt;&#10;&lt;br/&gt;&#10;Nyt on ohjelman paikka, eli yhdistä Arduino USB-johdolla tietokoneeseen ja avaa IDE. Jos et ole ohjelmoinut tai et tiedä miten ohjelma saadaan ladattua Arduinoon, niin älä pelästy: löydät ohjeet &lt;a href=&quot;https://peda.net/id/c8b17d88435&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;täältä&lt;/a&gt;. Koodin voit kopioida alta.&lt;br/&gt;&#10;&lt;br/&gt;&#10;&lt;strong class=&quot;editor red&quot;&gt;JOS PUHELIN EI TOIMI HALUTUSTI ?, TARKISTA KYTKENNÄT.&lt;/strong&gt; Jos ei edelleenkään toimi, tarkasta puhelimen merkki ja alkuperäismaa. Eri maissa johdoissa on käytetty eri värejä ja niiden kytkennöissä saattaa olla pieniä eroja. Löydät nämä googlaamalla. Kokeile myös hakusanan &amp;quot;Arduino&amp;quot; lisäämistä. Joku on ehkä tehty juuri siitä &amp;quot;made in East Germany&amp;quot; puhelimesta samanlaisen!</content>
<published>2019-02-28T14:04:10+02:00</published>
</entry>

<entry>
<title>Ohjelma</title>
<id>https://peda.net/id/c2e920a044a</id>
<updated>2019-03-12T12:08:19+02:00</updated>
<link href="https://peda.net/joensuu/jm/lightabot-luonnos/pakopelit/ep/vpagl/ohjelma#top" />
<content type="html">#include &amp;lt;SPI.h&amp;gt;&lt;br/&gt;&#10;&lt;br/&gt;&#10;#include &amp;lt;SD.h&amp;gt;&lt;br/&gt;&#10;&lt;br/&gt;&#10;#include &amp;lt;pcmRF.h&amp;gt;&lt;br/&gt;&#10;#include &amp;lt;pcmConfig.h&amp;gt;&lt;br/&gt;&#10;#include &amp;lt;TMRpcm.h&amp;gt;&lt;br/&gt;&#10;&lt;br/&gt;&#10;&lt;br/&gt;&#10;#define DEBUG&lt;br/&gt;&#10;//CONSTANTS&lt;br/&gt;&#10;//Configuration&lt;br/&gt;&#10;//Also plug in white wire from phone to Arduino GND&lt;br/&gt;&#10;// TÄMÄ ON TOIMIVA VERSIO!&lt;br/&gt;&#10;&lt;br/&gt;&#10;const byte phonePin = 9; //red wire from phone, ääni&lt;br/&gt;&#10;const byte hookPin = 8; // green wire from phone, pulssi, luuri hook tai unhook&lt;br/&gt;&#10;const byte chipSelectPin = 4;&lt;br/&gt;&#10;const unsigned long debounceDelay = 5; //ms, pulssit erottava aika&lt;br/&gt;&#10;const unsigned long maxPulseInterval = 250; //ms&lt;br/&gt;&#10;const int numDigitsInPhoneNumber = 5;&lt;br/&gt;&#10;&lt;br/&gt;&#10;//GLOBALS&lt;br/&gt;&#10;//Declare a global TMRpcm object for controlling audio playback&lt;br/&gt;&#10;TMRpcm tmrpcm;&lt;br/&gt;&#10;// The char representing of the number dialled (+1 to allow for string-terminating character \o)&lt;br/&gt;&#10;char number [numDigitsInPhoneNumber + 1];&lt;br/&gt;&#10;// The digit number currently beeing dialled&lt;br/&gt;&#10;int currentDigit;&lt;br/&gt;&#10;//How many pulses have been detected for current digit&lt;br/&gt;&#10;int pulseCount;&lt;br/&gt;&#10;//States in which the phone can be&lt;br/&gt;&#10;typedef enum { ON_HOOK, OFF_HOOK, DIALLING, CONNECTED } stateType;&lt;br/&gt;&#10;// Assume that the handset starts &amp;quot;on hook&amp;quot; eli luuri paikallaan&lt;br/&gt;&#10;stateType state = ON_HOOK;&lt;br/&gt;&#10;//In order to record &amp;quot;pulses&amp;quot; on the line, we keep track of the last pin reading...&lt;br/&gt;&#10;int previousPinReading = HIGH;&lt;br/&gt;&#10;//...the time at which the pin last changed value...&lt;br/&gt;&#10;unsigned long timePinChanged;&lt;br/&gt;&#10;//...and the current time&lt;br/&gt;&#10;unsigned long now = millis ();&lt;br/&gt;&#10;&lt;br/&gt;&#10;void setup () {&lt;br/&gt;&#10; // Both pins will initially be set as inputs (with internal pullup resistors), although&lt;br/&gt;&#10; // may be reassigned as outputs later&lt;br/&gt;&#10; pinMode (phonePin, INPUT_PULLUP);&lt;br/&gt;&#10; pinMode (hookPin, INPUT_PULLUP);&lt;br/&gt;&#10;&lt;br/&gt;&#10; // Start the serial connection&lt;br/&gt;&#10; Serial.begin (9600);&lt;br/&gt;&#10; Serial.println (F(&amp;quot;Serial connection started&amp;quot;));&lt;br/&gt;&#10;&lt;br/&gt;&#10; // Open connection to the SD card&lt;br/&gt;&#10; if (!SD.begin(chipSelectPin)) { //see if card is present and can be initialized:&lt;br/&gt;&#10; Serial.println(&amp;quot;SD card initialization failed!&amp;quot;);&lt;br/&gt;&#10; return; // don't do anything more if not working&lt;br/&gt;&#10; }&lt;br/&gt;&#10;&lt;br/&gt;&#10;// Volume range from 0 to 7&lt;br/&gt;&#10;tmrpcm.setVolume (4);&lt;br/&gt;&#10;// Enable 2x oversampling&lt;br/&gt;&#10;tmrpcm.quality (1);&lt;br/&gt;&#10;Serial.println (&amp;quot;Setup Complete&amp;quot;);&lt;br/&gt;&#10;}&lt;br/&gt;&#10;&lt;br/&gt;&#10;void loop () {&lt;br/&gt;&#10;&lt;br/&gt;&#10; // Is the receicer is lifted off the handset?&lt;br/&gt;&#10; int hookValue = digitalRead(hookPin);&lt;br/&gt;&#10;&lt;br/&gt;&#10; // If the receiver is lifted, but was not previously&lt;br/&gt;&#10; if(hookValue == 0 &amp;amp;&amp;amp; state == ON_HOOK) {&lt;br/&gt;&#10;&lt;br/&gt;&#10; // Print some debug info&lt;br/&gt;&#10; #ifdef DEBUG&lt;br/&gt;&#10; Serial.println (&amp;quot;Receiver Lifted&amp;quot;);&lt;br/&gt;&#10; #endif&lt;br/&gt;&#10;&lt;br/&gt;&#10; // Update the state&lt;br/&gt;&#10; state = OFF_HOOK;&lt;br/&gt;&#10; }&lt;br/&gt;&#10;&lt;br/&gt;&#10; // If the receiver is on the hook, but wasn't previously&lt;br/&gt;&#10; else if(hookValue == 1 &amp;amp;&amp;amp; state != ON_HOOK) {&lt;br/&gt;&#10;&lt;br/&gt;&#10; // Print some debug info&lt;br/&gt;&#10; #ifdef DEBUG&lt;br/&gt;&#10; Serial.println(&amp;quot;Receiver Replaced&amp;quot;);&lt;br/&gt;&#10; #endif&lt;br/&gt;&#10;&lt;br/&gt;&#10; // Update the puzzle state&lt;br/&gt;&#10; state = ON_HOOK;&lt;br/&gt;&#10;&lt;br/&gt;&#10; // Clear any information about the number we were dialling&lt;br/&gt;&#10; pulseCount = 0;&lt;br/&gt;&#10; currentDigit = 0;&lt;br/&gt;&#10;&lt;br/&gt;&#10; // Stop any audio&lt;br/&gt;&#10; tmrpcm.stopPlayback();&lt;br/&gt;&#10;&lt;br/&gt;&#10; // Put the pin back into input state&lt;br/&gt;&#10; pinMode(phonePin, INPUT_PULLUP);&lt;br/&gt;&#10; }&lt;br/&gt;&#10;&lt;br/&gt;&#10; if(state == OFF_HOOK || state == DIALLING) {&lt;br/&gt;&#10;&lt;br/&gt;&#10; // Record the current timestamp&lt;br/&gt;&#10; now = millis();&lt;br/&gt;&#10;&lt;br/&gt;&#10; // Test the value of the phone pin&lt;br/&gt;&#10; int pinReading = digitalRead(phonePin);&lt;br/&gt;&#10;&lt;br/&gt;&#10; // If the value has changed&lt;br/&gt;&#10; if (pinReading != previousPinReading) {&lt;br/&gt;&#10;&lt;br/&gt;&#10; // The user is dialling a number&lt;br/&gt;&#10; state = DIALLING;&lt;br/&gt;&#10;&lt;br/&gt;&#10; // &amp;quot;Debouncing&amp;quot; method to ignore jittery fluctations in readings&lt;br/&gt;&#10; // If the time elapsed since the last time this pin was changed is only a small amount of time&lt;br/&gt;&#10; if (now - timePinChanged &amp;lt; debounceDelay) {&lt;br/&gt;&#10; // Don't do anything&lt;br/&gt;&#10; return;&lt;br/&gt;&#10; }&lt;br/&gt;&#10;&lt;br/&gt;&#10; // A HIGH signal means that a dialling pulse has been detected&lt;br/&gt;&#10; if(pinReading == HIGH) {&lt;br/&gt;&#10; pulseCount++;&lt;br/&gt;&#10; }&lt;br/&gt;&#10;&lt;br/&gt;&#10; // Update the stored time and reading values for further comparison&lt;br/&gt;&#10; timePinChanged = now;&lt;br/&gt;&#10; previousPinReading = pinReading;&lt;br/&gt;&#10; }&lt;br/&gt;&#10;// WE've recorded a sequence of pulses, and the time since the last pulse was detected&lt;br/&gt;&#10;// is longer than the maxPulseInterval&lt;br/&gt;&#10;if (((now - timePinChanged) &amp;gt;= maxPulseInterval) &amp;amp;&amp;amp; pulseCount &amp;gt; 0) {&lt;br/&gt;&#10;&lt;br/&gt;&#10;// If we haven't yet dialled a complete number&lt;br/&gt;&#10;if (currentDigit &amp;lt; numDigitsInPhoneNumber) {&lt;br/&gt;&#10; &lt;br/&gt;&#10;&lt;br/&gt;&#10; // The digit '0' is represented by 10 pulses&lt;br/&gt;&#10; if (pulseCount == 10) { pulseCount = 0; }&lt;br/&gt;&#10;&lt;br/&gt;&#10; #ifdef DEBUG&lt;br/&gt;&#10; Serial.print (F(&amp;quot;Digit dialled: &amp;quot;));&lt;br/&gt;&#10; Serial.println (pulseCount);&lt;br/&gt;&#10; #endif&lt;br/&gt;&#10;&lt;br/&gt;&#10; // Append the most recent digit dialled onto the end of the number array&lt;br/&gt;&#10; number[currentDigit] = pulseCount | '0';&lt;br/&gt;&#10;&lt;br/&gt;&#10; // Increment the counter&lt;br/&gt;&#10; currentDigit++;&lt;br/&gt;&#10;&lt;br/&gt;&#10; // Initialize the next value&lt;br/&gt;&#10; number[currentDigit] = 0;&lt;br/&gt;&#10;}&lt;br/&gt;&#10;&lt;br/&gt;&#10;// If we've dialed the correct number of digits&lt;br/&gt;&#10;if (currentDigit == numDigitsInPhoneNumber) {&lt;br/&gt;&#10;&lt;br/&gt;&#10; // Print some debug information&lt;br/&gt;&#10; #ifdef DEBUG&lt;br/&gt;&#10; Serial.print (F(&amp;quot;Number dialled: &amp;quot;));&lt;br/&gt;&#10; Serial.println (number);&lt;br/&gt;&#10; #endif&lt;br/&gt;&#10;&lt;br/&gt;&#10; // This number plays a recorded message&lt;br/&gt;&#10; if (strcmp(number, &amp;quot;12345&amp;quot;) == 0) {&lt;br/&gt;&#10; #ifdef DEBUG&lt;br/&gt;&#10; Serial.println (F(&amp;quot;Playing sound&amp;quot;));&lt;br/&gt;&#10; #endif&lt;br/&gt;&#10; // Now, we set the pin as OUTPUT for the audio signal&lt;br/&gt;&#10; pinMode(phonePin, OUTPUT);&lt;br/&gt;&#10; //Set the TMRPCM library to use the pin for output&lt;br/&gt;&#10; tmrpcm.speakerPin = 9; // Must be 9 on UNO&lt;br/&gt;&#10; // Play the appropriate sound file&lt;br/&gt;&#10; tmrpcm.play(&amp;quot;1.WAV&amp;quot;);&lt;br/&gt;&#10;&lt;br/&gt;&#10; //Wait until the receiver is replaced on the handset&lt;br/&gt;&#10; while(!digitalRead(hookPin)){ delay(1000);}&lt;br/&gt;&#10; }&lt;br/&gt;&#10;&lt;br/&gt;&#10; // If an incorrect number was dialled&lt;br/&gt;&#10; else {&lt;br/&gt;&#10; // Set the pin as OUTPUT&lt;br/&gt;&#10; pinMode(phonePin, OUTPUT);&lt;br/&gt;&#10; // Set the TMRPCM library to use the pin for output&lt;br/&gt;&#10; tmrpcm.speakerPin = 9; // Must be 9 with UNO&lt;br/&gt;&#10; //Play the appropriate sound file&lt;br/&gt;&#10; tmrpcm.play(&amp;quot;2.WAV&amp;quot;);&lt;br/&gt;&#10; // Now wait for the audio to play&lt;br/&gt;&#10; delay(8500);&lt;br/&gt;&#10; }&lt;br/&gt;&#10;&lt;br/&gt;&#10; // Set the puzzle state to complere&lt;br/&gt;&#10; state = CONNECTED;&lt;br/&gt;&#10;}&lt;br/&gt;&#10;&lt;br/&gt;&#10; // This digit has been processed, so reset the pulse counter for the next digit&lt;br/&gt;&#10; pulseCount = 0;&lt;br/&gt;&#10; }&lt;br/&gt;&#10; &lt;br/&gt;&#10; }}</content>
<published>2019-03-12T12:08:19+02:00</published>
</entry>


</feed>