Robojuchen / Mechatronics2013

Demo
2 stars 4 forks source link

Korhonen&Karjula Herättäjä #18

Open Venla opened 10 years ago

Venla commented 10 years ago

Vaihdettiin allaoleva idea vaihtoehtoiseen ideaan herätysrobotista. Unitorpedo liikkuisi itsestään ympärihuonetta herätyskellon alkaessa soimaan ja sammuisi vasta saatuaan oikean vastauksen esittämäänsä kysymykseen. Lisäominaisuuksia voisi kehitellä loputtomasti. Esim. veden ruiskautus ja kohteliaisuuksien/hyvän huomenen toivottaminen. Laitettiin jo tilaukseen Arduino UNO, 2 kpl servoja, lcd-näyttö ja näppäimistö.Näillä alkuun! Ultraäänisensori pitäs vielä hankkia, sekä mahdollisesti vesipyssy, SD-muistikortti, moduuliliitäntä ja minikaiutin, mistä Jussi jo alla kommentoi.

Ensimmäinen idea((Kaks harrastelijasoittelijaa kaipais korvansa tueksi viritysmittaria. Se vois olla tehty pelkästään esimerkiksi akustiselle kitaralle, eli se tunnistaisi tarkat kielet E,A,D,G,H,E. ( 82,4 Hz, 110 Hz, 146,8 Hz, 196 Hz, 246,9 Hz, 329,6 Hz) Vähän urpoja ollaan Arduinon kanssa, mutta olettaisimme, että tällainen äänentaajuusmittari löytyy. Jokaista kieltä voisi mallintaa esim. puinen tappi, joka kääntyilisi korkeus- tai leveyssuunnassa sävelen korkeuden mukaan, ja tavoiteltu Hz alue on merkitty selkeästi. Tavoitteena olisi saada miellyttävän näköinen tuote, jota ei tarvitsisi laittaa kaappiin piiloon käytön jälkeen. Onko kellään vinkkejä? ))

matpi commented 10 years ago

En tiedä, onko tästä apua, mutta haulla "frequency recognition & Arduino" kannattaa yrittää Googlata... katsokaapa tämä: http://luisvillarandesign.com/Design_Site/Arduino_Frequency.html

KalliJ commented 10 years ago

Juuri tälläisen haluaisin nähdä. Keep on! Ps:tehkää tämä vielä puusta ja viimeisenpäälle, niin Uuhh!

karos commented 10 years ago

Ehkä koteloinnin voisi yhdistää Esan kurssiin? Intarsia voisi toimia:-)

Robojuchen commented 10 years ago

Mielenkiintoinen idea. Olen tässä tutkistellut että miten vaikea tuo on saada toimimaan ja miten luotettavasti. Näin alustavasti ei näytä mahdottomalta. Nimittäin kuitenkin soittimen virityksessä pitää olla aika tarkka noitten taajuuksien kanssa. Miettikkää vähän jotakin vaihtoehtoista juttuakin jos käy niin että tämä näyttää liian epävarmalta projektilta.

Itse olen haaveillut rakentavani vempeleen joka soittaa kitaraa. Servot painelee sointuja kielistä ja moottoroidut sormet näppäilee, siinä olis hauska joskaan ei hyödyllinen vehje...

Venla commented 10 years ago

Vaihtoehtoinen idea; Herätysrobotti

Vaihtoehtoiseksi ideaksi nousi herätysrobotti. Kun herätyskello soi (herätyskello kiinni robotissa), robotti lähtee pörrään ympäri huonetta. Herätyskello sammuisi vasta, kun vastaisi oikein robotin näytölle ilmestyvään helppoon matikanlaskuun tms. Oishan se mahtava ku robotti toivoittais hyvät huomenet, repis peiton pois ja suihkauttais vielä kylmää vettäkin päälle...

Robojuchen commented 10 years ago

Tuo viritin on mahdollinen, mutta vähän sellainen on/off projekti. Sen saa joko toimimaan tai sitten on pieni riski että ei tarpeeksi hvyin toimikaan. Netistä löytyy monta projektia jossa on valmiit koodit joilla kitaran virittimiä on saatu toimimaan tekijöiden mukaan luotettavasti. Tuo sävelen tunnistus arduinolla on koodina vähän vaikeaa, että joutuisitte turvautumaan aika valmiiseen koodiin jota on haastava optimoida jos se ei toimikkaan. Eli käytännössä tekisitte valmiin mallin mukaan tuon virittimen mutta satsaisitte tuotteen viimeistelyyn ja hienoon tapaan esittää informaatio. Tämä on hieno projekti jo on valmis ottaamaan pienen riskin :)

Mukava saattaisi olla myös projekti jota voi rakennella ja optimoida itse niin hyväksi kun itse haluaa. Herätysrobotti on minusta aika hauska idea ja toimisi tällaisena varmempana projektina. Siinä on monia hyviä kehityslinjoja:

1.Robotti joka osaa turvallisesti paeta hyppäämällä yöpöydältä :) 2.Tuo laskukin on aika kavala idea.. 3.Kyllä veden ruiskutus on aika helppo toteuttaa. Mini vesipumput on halpoja e-bayssa.

Peiton repijä saattaisi meidän ammattitaidolla totetutettuna repiä myös joitakin ruumiinjäseniä. Arduino on helppo ja halpa saada ääntelemään nauhoitettuja viestejä. Olen tässä viimepäivinä kokeillut sitä. Vaatii vain SD-kortin, sille liitäntä moduulin(pari euroa) ja pienen kaiuttimen. äänet nahoitetaan tietokoneella kopioidaan muistikortille ja avot: Arduino osaa soittaa niitä!

juvako commented 10 years ago

suunnitelmat herätysrobotista jatkuvat. Kysymys kuuluukin Jussille: Onko linkitetyn kuvan kaltainen robo mahdollinen toteuttaan niin, että keskiosa pysyisi suorassa eikä pyörisi holtittomasti akselinsa ympäri? Ongelmana pyörimisessä olisi etäisyyttä mittaavan sensorin toiminta. kyseisellä mallilla pyödältä hyppääminen olisi kuitenkin helpoin toteuttaa.

http://4.bp.blogspot.com/-hxj0gYksKmY/TsbeQkA5pDI/AAAAAAAAAoQ/iY7PVPMioG8/s1600/running+clock-crazy+gifts.jpg

Robojuchen commented 10 years ago

Tässä ollaan nyt mekatroniikan ytimessä. Laakeroidaanko keskiosa moottoreihin nähden ja painopiste alas että pysyy automaattisesti suht suorassa(pieni keinunta ei haittaa) Mietin että jos keskiosassa on painopiste alhaalla niin pysyykö se automaattisesti suorassa vaikkei olisi laakerointiakaan?

Entä painotettu muna (ellipsin pyörähdyskappale tms) Renkaat pistävät esiin alaosasta. Kiihtyvyyssensori tunnistaa kun muna putoaa ja laite vetää pyörät sisään. Sitten taas työntää pyörät ulos ja matka jatkuu :)

juvako commented 10 years ago

Tilannekatsaus

Projekti: herätysrobotti

Tilatut tavarat: Arduino UNO, 2 kpl servoja, lcd-näyttö ja näppäimistö. Tilaus on tehty Samin kimppatilauksen mukana, ja meillä ei ole vielä tietoa tilauksen saapumisesta.

Hankittavia: runkomateriaali (puuta), renkaat, akseli, akku, ultraäänisensori, SD-muistikortti, moduuliliitäntä ja minikaiutin. Tarvittaessa vesipyssy.

Robojuchen commented 10 years ago

Tässä pohdiskelin teidän projektia joka on melko mielenkiintoinen kyllä. Onko tuo hyppäys jätetty pois? Aika haastava varmaan toteuttaa siten ettei akselille tulisi liikaa iskua. Yksi vaihtoehto olisi että renkaat tulisivat pohjasta hieman läpi ja kello olisi painotettu siten että se tippuisi kylki edellä mutta keikahtaisi sitten jaloilleen? Tuon ominaisuuden voi jättää hyvin poiskin, on tuossa hommaa muutenkin.

Tuumiskelin että ajanpitäminen yllä pelkällä arduinolla on hankala homma, voi mennä helposti pois ajasta ja esim patterien vaihdon aikana kellonaika häviää. Ratkaisu: Parilla eurolla saa reaaliaikakello moduulin. Siinä on oma patteri ja siltä arduino voi kysyä aina paljonko kello on ja mikä päivä on. http://www.ebay.com/itm/1PCS-AT24C32-Real-Time-Clock-Module-I2C-RTC-DS1307-for-arduino-AVR-PIC-51-ARM-/370868603902?pt=LH_DefaultDomain_2&hash=item56597dcbfe

Hyvä SD-moduuli: http://www.ebay.com/itm/Micro-SD-Storage-Board-Mciro-SD-TF-Card-Memory-Shield-Module-SPI-Arduino-CM-/271294392852?pt=AU_B_I_Electrical_Test_Equipment&hash=item3f2a67ea14

Venla commented 10 years ago

Kiitos Jussi! Näyttääpä vielä kohtuuhintaisilta "lisäosilta".. Virtalähde-/akku-asia on vielä ratkaisematta. Kannattaa varmaan sitten tilata kaikki loput samassa paketissa, ettei tuu ylim. postituskuluja.

Robojuchen commented 10 years ago

E-baysta kannattaa mieluumminkin tilata erikseen. Postikulut on ilmaiset eikä tuo tullausraja ylity. Lisäksi eivät ole kaikki munat samassa korissa jos lähetys viipyy.

juvako commented 10 years ago

Projektipäivitys 2:

Työ sytyttää, mutta kamalan vaikea aloittaa koodien osalta. Ainoa koodi, johon osaamme tarttua, on robotin liikkuminen. Voidaan käyttää pohjana samaa koodia, minkä loimme vimeisellä syksyn demokerralla. Laitetaan tähän mitä ollaan mietitty, vapaasti saa kommentoida ja ehdottaa parempia ratkaisuja! Itse olemma vieläkin yhtä suurta kysymysmerkkiä. Ens viikolla yritämme löytää netistä sopivia koodeja enemmän. Mekaniikan osalta ollaan optimistisia, ei pitäis tuottaa ongelmia. Ollaan edelleen pöydältä hyppäävän robotin kannalla, yritämme nyt löytää renkaat joiden halkaisija on tarpeeksi suuri. Esimerkiksi isojen nikkoautojen kaltaiset "ilmapyörät" vähentäisi rasitusta akselilta. Akselit on tarkoitus laakeroida. Laakeri kiinnitetty tukevasti sivuseinään, jolloin pitäisi kestää iskut. Kestääköhän arduino heilumista kuinka paljon?

MP3 toisto: Kannattaako äänen toisto tehdä esim. tällaisella valmiilla shieldillä vai löytyisikö halvempia ratkaisuja? Tarkoituksena on saada herätysääneksi mp3 ääntä (musiikkia, omia äänityksiä). http://www.ebay.com/itm/MP3-Shield-for-Arduino-Arduino-MP3-Shield-USB-SD-64Mbit-Flash-3W-Amplifier-/140842715301?pt=LH_DefaultDomain_0&hash=item20cae148a5

Haluaisimme löytää netistä tarpeitamme vastaavan projektin mp3-toistosta, josta voisimme ottaa suoraan mallia ja tilata sopivan kaiutin-vahvistin setin. Ei tarvitsisi miettiä vahvistimen ominaisuuksia sen kummemmin. Yllä oleva osa, ilmeisesti korvaisi aiemmin linkittämäsi SD-moduulin.

RealTimeClock tilattu e-baylta.

Vielä hankittavia:

Osat mp3-toistooon, kun saamme ongelmaan ratkaisun eli apua. akku: kuinka iso, mistä kannattaa tilata?

Pahoittelemme avuttomuuttamme!!

matpi commented 10 years ago

Hienoa että olette innoissanne projektista. Jussi varmaan osaa kommentoida paremmin tuosta mainitun MP3 -shieldin sopivuudesta, mutta tässä nyt ensi alkuun...

Huomasitteko, että kyseinen myyjä [elechouse (2133 )] ilmoittaa olevansa vapaalla: This seller is currently away until Feb 14, 2014. If you make a purchase, there may be a delay in processing your order.

Löysin Googlettamalla " MP3 Shield for Arduino - Arduino MP3 Shield, USB&SD, 64Mbit Flash & 3W Amplifier " seuraavan linkin, jossa shieldistä löytyy tietoa paljon enemmän. Shieldissä on ilmeisesti jo sisäänrakennettu pieni 3W vahvistin: http://www.emartee.com/product/42218/USB%20SD%20MP3%20Shield%20With%2064Mbit%20Flash%20And%20Audio%20Amplifier

Tuolta löytyy myös parempia kuvia sekä testikoodi MP3_Shileld_elechouse.com / MP3.cpp: https://docs.google.com/file/d/0B2_rhDNAxM4sZHpMWG44VGJ1b00/edit?pli=1

Alla yksi esimerkki... en oikein näistä ymmärrä, mutta vaikuttaa että tuo on vasta osa koodia, mahtaako seuraava olla jatkoa tulle alla olevalle: MP3_Shileld_elechouse.com / MP3.h ...README -tiedostossa on ohjeita, katsokaa se. Avasin Notepadilla.

/* @file MP3.cpp @author ELECHOUSE @version V0.1 @date 2012-6-22 @brief source file for Arduino MP3 Shield /

include "MP3.h"

MP3::MP3() {

}

void MP3::begin() { delay(3000); COM.begin(9600); }

void MP3::send_cmd(u8 *cmd) { u8 i; u8 length; length = cmd[1]+2; if(length>CMD_BUF_LEN){ return; } cmd[0] = 0x7E; cmd[length-1] = 0x7E; for(i=0; i<length; i++){ COM.write(cmd[i]); } }

void MP3::next() { cmd_buf[1]=0x02; cmd_buf[2]=0xA5; send_cmd(cmd_buf); } jne.

EDIT: nämä ovat kirjaston h-tiedostosta. Siitä löytyy varsinainen esimerkkikoodikin.

Robojuchen commented 10 years ago

Hyvältä vaikuttaa teidän projekti. Koodiakin tekemään vain pala kerrallaan. Palautatte esimerkkien avulla mieleen arduino-koodin perusrakenteet ja testaatte ne osat toimiviksi mitä teillä on. Älkää stressatko, kukapa meistä on syntynyt arduinopalikat päähän esiasennettuna.

Tuota mp3-puolta ehtii tässä miettimään, tuon kurssille oman sd-moduulin ja kokeillaan sitä(ja siis arduino/software pohjaista äänentoistoa). Jos äänenlaatu riittää teille siinä on ainakin halpa ratkaisu. Myös noita varsinaisia mp3-moduuleita saa halvemmalla ja pienempiä malleja kuin mitä tuo katselemanne. Riittääkö teille "herätystasoinen musiikki" vai onko tarkoitus tehdä laitteesta samalla ihan musiikkisoitin?

Mukava että jatkatte hyppäävän robotin linjalla. Mekatronisesti mielenkiintoisempi ja persoonallinen projekti. Tuota virtapuolta olen pähkäillyt. Miltä kuulostaisi seuraava ratkaisu: robotti pannaan yöpöydälle telakkaan josta se sitten ampaisee taipaleelle. Näin virrankulutusta ei tarvitsisi murehtia, paristoja vaihdella ja pieni akku riittäisi kattamaan aamujumpan vaatiman virtamäärän. Näin robottiin ei tule paljon painoa ja hyppy pöydältä ei ole niin murhaava?

Toinen vaihtoehto on kehittää laitteesta hyvin virtapihi, mikä on taas oma taiteenlajinsa.

Venla commented 10 years ago

Telakka ajatus mainio! Lattialla säilyttäminen olis ollu vähän "kökkö" ratkaisu. Nyt vaan ettimään akku ja laturi -kombinaatiota. Varmaan voidaan tehdä mistä tahansa mallista semmonen, että irtoaa helposti liikkeelle lähtiessään.

Meille riittää herätystasoinen musiikki. Mietimme vain, että jos laitamme rahaa muutaman kympin verran mp3 moduuliin, niin sitten olis kiva, jos se vois toimia musiikkisoittimenakin. Mutta jos päästään halvemmalla, herätysmusiikki riittää. Hauska ois, että saataisiin soitettua omia äänityksiä. Saataisiin robo kirkumaan yhä rumemmin, mitä kauemmin aikaa heräämiseen menee.

Tuleeko meillä aikataulun kanssa kiire, jos jäämme odottelemaan sun sd-moduulia ja päätetään vasta sitten? Sitten saatiin vinkkiä, että jos äänitiedoston jättää pakkaamatta, sen toistaminen ois paljon helpompaa. Oisko tässä mitään? Tässä siitä linkki. http://maxoffsky.com/maxoffsky-blog/how-to-play-wav-audio-files-with-arduino-uno-and-microsd-card/

juvako commented 10 years ago

Pohdittavaksi noussut aihe tällähetkellä on laturi. Millä tavalla saamme toteutettua telakassa latauksen niin ettei akku ylikuormitu? Voiko arduinolla koodata latauksen loppumaan kun akku täynnä vai onko myynnissä edullisia latureita missä on sama toiminto. Koulu elektroniikassa oli mutta hintaa oli 20€-30€. Onko Jussilla ajatusta tähän?

Robojuchen commented 10 years ago

Kyllähän arduino voit tarkkailla latausta. Ajattelin että voisitte käyttää trickle charge latausta jos käytätte ni-cd tai nimh akkuja. Eli kun pattereita syötetään pienellä virralla niin se ei haittaa vaikka lataa jatkuvasti.

juvako commented 10 years ago

kuva 1

Tässä meidän monen tunnin yrityksen tulos; vuotavakaavio. Tämän yksityiskohtaisemmin osanneet sitä tehdä. Emme edes päässeet perille kaikista esimerkin vuokaavion termeistä; Esim. mitä tarkalleen sisältää kirjasto, mitä tarkoittaa objektien luominen jne. Emme osanneet hahmottaa omasta työstä, että minkälaisia muuttujia luodaan yms.

Kuva rungonrakenteesta on lähetetty aiemmin Matin s-postiin.

juvako commented 10 years ago

rob3

Robojuchen commented 10 years ago

Tuo vuokaaviohan näyttää jo melko hyvältä! Logiikka pelaa. Kirjastot tarkoittavat valmiita koodipaketteja jotka tuodaan ohjelman käyttöön. Esim Musiikin soittaminen SD levyltä vaatii melkoisen määrän koodia, mutta se voidaan piilottaa yksinkertaistettujen komentojen taakse. Aina kun kirjastoa käytetään pitää luoda "olento"/objekti kirjastosta jota sitten komennellaan.

Setup osiossa sitten "käynnistetään" nämä luodut oliot. Teiltä puuttuu setup-osiosta nämä käynnistys komennot. Katsokaa malliesimerkeistä miten ne tehdään.

Vuokaavio on ohjelman toiminnan osalta aika hyvä. Pikkuisen yksityiskohtia pitää tarkentaa, esim. mihin ohjelma menee jos ehto ei toteudu jne. Loopin pitäisi alkaa sen tarkastamisella onko herätys asetettu, ja haarautua sitten tarkastuksen tuloksen mukaan herätyksen asettamiseen tai herätyksen odottamiseen.

Robojuchen commented 10 years ago

Vinkkiä virransäästöön...https://github.com/Robojuchen/Mechatronics2013/issues/56

Miten muuten projekti etenee? Mulla on muuten pari vinkkiä tuohon telakkahommaan kun sitä rupeatte pohtimaan.

Robojuchen commented 10 years ago

Tässä vähän neuvoa tuohon äänentuottamiseen:

https://github.com/Robojuchen/Mechatronics2013/issues/57

Se perus servo-kirjasto ei sitten toimi tämän kanssa yhtä aikaa mutta toimitan matin kautta teille aivan samalla tavalla toimivan servo-kirjaston joka toimii.

Robojuchen commented 10 years ago

Servo kirjasto toimitettu matille, kysykää häneltä. Tässä olisi yksinkertaisin mahdollinen vaihtoehto siihen miten toteutetaan tuo telakka/robon oma akku vaihto kun se lähtee liikkeelle.

Ideana on että vasemmalla on seinästä tulevan verkkolaitteen jännitelähde esim. 9v. Alempana on arduinon omat patterit. Koska seinästä tuleva jännite on suurempi kuin tuo patterien jännite ei pattereilta tule virtaa. Kun robotti kiskaisee töpselinsä irti pattereilta alkaa kulkea virta arduinolle saman tien. Tämä toimii ainakin teoriassa :) pitäisi kokeilla koekytkentälevyllä. Pattereiden jännite pitäisi olla 7-8v. Sevoille pitää olla oma regulaattori luultavasti. Ainakin tuon pattereilta tulevan diodin kannattaisi olla schotky-diodi ettei se pudota liikaa jännitettä.

virtajuttu

Jos halutte että toimii vähemmillä pattereilla niin pitää kehittää jotakin muuta. Lataussysteemiäkin voin pohtia mutta sitä ei välttämättä kannata edes rakentaa robottiin, vaihtaa vain patterit silloin harvoin kun tarvitsee. Eihän tuo pitkiä aikoja ole päällä patterien varassa.

Venla commented 10 years ago

Miksi näppäimistö ei kirjoita nollaa(0)? Kaikki muut näppäimet toimii, vaikkakin kirjaimet ja numerot tulee kaksinumeroisena, mutta 0 se ei tunnista lainkaan, eli näytölle ei ilmesty mitään.

täsä tämä näppäinten osuus koodin alusta.

include //tuo Keypad-kirjaston

const byte ROWS = 4; //four rows const byte COLS = 4; //three columns char keys[ROWS][COLS] = { {1,2,3,'A'}, {4,5,6,'B'}, {7,8,9,'C'}, {'*',0,'#','D'} }; byte rowPins[ROWS] = {9, 8, 7, 6}; //connect to the row pinouts of the keypad byte colPins[COLS] = {5, 4, 3, 2}; //connect to the column pinouts of the keypad Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

Venla commented 10 years ago

Toinen kysymys: Saatiin toimimaan lasku ja laskun vertailu, jos vastaus on yksinumeroinen! En tiedä, liekö syynä myöhäinen ajankohta, vai muuten vaan nollat taulussa, etten osannut tehdä sitä niin, että vastaus olisi kaksinumeroinen. Helpostihan saa koodia muokattua niin, että voi antaa kaksinumeroisen vastauksen, mutta mihin ja miten voi syöttää oikeanvastauksen arvon? En siis pystynyt ihan suoraan soveltaa asetetun herätysajan ja kellon vertailua, koska siinähän vertailtava kohde (realtime) on koko ajan näkyvillä, toisin kuin laskussa. Myös syötettävä lasku oli ongelma. Nyt se vaan printataan ikäänkuin tekstinä lcd.print ("1+2="), mutta voisiko sen saada joksikin "muuttujaksi", jolloin voisimme syöttää valmiiksi eri laskuvaihtoehtoja. (lasku1, lasku2, lasku3 jne).Tai onko jotakin vielä järkevämpää keinoa? Toivottavasti saat selvää näistä kysymyksistä. Alla toimiva koodi, joka tunnistaa oikean yksinumeroisen vastauksen.

include //tuo Keypad-kirjaston

const byte ROWS = 4; //four rows const byte COLS = 4; //three columns char keys[ROWS][COLS] = { {1,2,3,'A'}, {4,5,6,'B'}, {7,8,9,'C'}, {'*',0,'#','D'} }; byte rowPins[ROWS] = {9,8, 7, 6}; //connect to the row pinouts of the keypad byte colPins[COLS] = {5, 4, 3, 2}; //connect to the column pinouts of the keypad Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

include // Tämä tuo I2C-kirjaston käyttöön.

include // Ja tämä LCD-kirjaston.

LiquidCrystal_I2C lcd(0x20,16,2); // Asettaa LCD näytön osoitteeksi 0x20, näytön koko 16x2 merkkiä.

include //aika

include

int oikeavastaus; int vastaus[1]; int laskuri2 = 0; //laskee näppäinten lukukertoja vastauksen annossa int laskurilcd2 =0; //lcd-näytön paikkalaskuri vastauksen annossa

void setup()
{ Serial.begin(9600); lcd.init(); // Alustaa näytön toimivaksi. lcd.backlight();// Sitten taustavalo päälle ja tulostetaan. lcd.print("Hello, I'm Meeri!"); delay(1000); lcd.clear(); lcd.setCursor(0,0); }

void loop() { annatehtava1(); vastauksenanto(); vertailevastausta(); }

void annatehtava1() { lcd.setCursor (8,1); lcd.print("1+2="); } void vastauksenanto() { char key = keypad.getKey(); //lukee onko nappia pohjassa if (key != NO_KEY) //jos nappi on pohjassa { while (laskuri2 == 1) { laskuri2 = 0; laskurilcd2 = 0; } if (laskuri2 < 2) //jos laskuri on <2, kirjoittaa näppäillyt numerot näytölle { lcd.setCursor(laskurilcd2+12,1); //asettaa kursorin laskun perään lcd.print(key,DEC); //printtaa painetun numeron vastaus[laskuri2] = key; laskuri2 = laskuri2+1; //lisää laskuria laskurilcd2 = laskurilcd2 +1; //lisää laskurilcdtä, eli näyttöä }

      else if (laskuri2 == 1) //Jos laskuri on 1,

osaa hypätä taas alkuun nollaamalla laskurit { laskuri2 = 0; laskurilcd2 =0; } } }

void vertailevastausta() { oikeavastaus = 3; if ( vastaus[0] == oikeavastaus) // kun vastaus on sama kuin oikeavastaus, lcd printtaa Oikein! { lcd.setCursor(0,0); lcd.print("Oikein!"); } }

Robojuchen commented 10 years ago

Tuo nolla- ongelmahan me korjattiin jo sillon tekemällä muutokset siihen macissa olevaan kirjastoon. Katsokaapa toimiiko se siinä koneessa, jos toimii niin kopioikaa se kirjasto myös muille koneille millä työskentelette. Ongelma on siis se että oletuksena tuo keypad kirjasto tulkitsee luvun nolla viestinä "ei lukua, mene eteenpäin"

voin jahka ehdin auttaa tuon laskuohjelman kanssa enemmänkin. Hyvin tuokin on kun saa jo jonkinlaista laskua vertailtua. Ehdotan kuitenkin että muutatte kyselyn rakennetta seuraavasti

kysymysohjelma: arvotaan numero random-toiminnolla. if (numero == 0) { lasku = sejase vastaus = se ja se } else if (numero = 1) { lasku = sejase vastaus = sejase } jne.

sitten printtaatte laskun ja jäätte while silmukkaan odottamaan näppäilyjä kunnes näppäilylaskuri täyttyy tai käyttäjä painaa esim A. Näppäilyt printataan ja tallentaan ensimmäisellä näppäinkerralla vastaus[0] paikkaan, seuraavalla vastaus[1] jne. Tämä koko roska siis while silmukkaan jolle nuo ehdot.

sitten menette vertailu aliohjelmaan. teillä on vastauslaskurissa näppäilyjen määrä. siitä tiedätte moniko numeroinen luku. if lauseilla omat ohjelmat erikokoisille luvuille. esim if (laskuri ==2) { int anti =vastaus[0]*10 + vastaus[1]; } sitten vertaatte oikeaa vastausta tähän lukuun. nollatte laskurit ja show goes on.

Kokeilkaa näillä ohjeilla ja autan lisää jos tarvitsee ja jahka ehdin.