//AGS:HaikuShake V02 /* haiku: form1: article adjective noun article noun verb preposition article noun adjective adjective noun form2: noun preposition article noun article adjective noun preposition article noun adjective noun form3: article adjective adjective noun preposition article adjective noun article noun verb */ //hardware connections //tiltX to analog 0 //tiltY to analog 1 //LCD rx to tx (digital 1) //using flash mem on atmega chip to store large array of strings #include //for PROGMEM //////////////////////////////////////////////////// //nouns prog_char n_0[] PROGMEM = "breeze "; prog_char n_1[] PROGMEM = "moon "; prog_char n_2[] PROGMEM = "rain "; prog_char n_3[] PROGMEM = "wind "; prog_char n_4[] PROGMEM = "sea "; prog_char n_5[] PROGMEM = "sky "; prog_char n_6[] PROGMEM = "storm "; prog_char n_7[] PROGMEM = "water "; prog_char n_8[] PROGMEM = "finger "; prog_char n_9[] PROGMEM = "bottle "; prog_char n_10[] PROGMEM = "monkey "; prog_char n_11[] PROGMEM = "tree "; prog_char n_12[] PROGMEM = "wind "; prog_char n_13[] PROGMEM = "peace "; prog_char n_14[] PROGMEM = "love "; prog_char n_15[] PROGMEM = "clock "; prog_char n_16[] PROGMEM = "grapefruit "; prog_char n_17[] PROGMEM = "cloud "; prog_char n_18[] PROGMEM = "ocean "; prog_char n_19[] PROGMEM = "fog "; prog_char n_20[] PROGMEM = "wave "; prog_char n_21[] PROGMEM = "treasure "; prog_char n_22[] PROGMEM = "island "; prog_char n_23[] PROGMEM = "harmony "; prog_char n_24[] PROGMEM = "speaker "; prog_char n_25[] PROGMEM = "care "; prog_char n_26[] PROGMEM = "trail "; prog_char n_27[] PROGMEM = "twinkle "; prog_char n_28[] PROGMEM = "flower "; prog_char n_29[] PROGMEM = "forrest "; prog_char n_30[] PROGMEM = "drum "; prog_char n_31[] PROGMEM = "bank "; prog_char n_32[] PROGMEM = "gate "; prog_char n_33[] PROGMEM = "knife "; prog_char n_34[] PROGMEM = "bridge "; prog_char n_35[] PROGMEM = "warmth "; prog_char n_36[] PROGMEM = "stick "; prog_char n_37[] PROGMEM = "rock "; prog_char n_38[] PROGMEM = "beat "; prog_char n_39[] PROGMEM = "puddle "; prog_char n_40[] PROGMEM = "orchestra "; prog_char n_41[] PROGMEM = "oracle "; prog_char n_42[] PROGMEM = "apple "; prog_char n_43[] PROGMEM = "hand "; prog_char n_44[] PROGMEM = "mind "; prog_char n_45[] PROGMEM = "umbrella "; prog_char n_46[] PROGMEM = "omen "; prog_char n_47[] PROGMEM = "room "; prog_char n_48[] PROGMEM = "void "; prog_char n_49[] PROGMEM = "miracle "; prog_char n_50[] PROGMEM = "arch "; prog_char n_51[] PROGMEM = "path "; prog_char n_52[] PROGMEM = "tunnel "; prog_char n_53[] PROGMEM = "cage "; prog_char n_54[] PROGMEM = "shelf "; prog_char n_55[] PROGMEM = "illusion "; prog_char n_56[] PROGMEM = "cellar "; prog_char n_57[] PROGMEM = "sky "; prog_char n_58[] PROGMEM = "star "; prog_char n_59[] PROGMEM = "breeze "; prog_char n_60[] PROGMEM = "monster "; prog_char n_61[] PROGMEM = "child "; prog_char n_62[] PROGMEM = "clown "; prog_char n_63[] PROGMEM = "cliff "; prog_char n_64[] PROGMEM = "egg "; prog_char n_65[] PROGMEM = "man "; prog_char n_66[] PROGMEM = "barrel "; prog_char n_67[] PROGMEM = "dish "; prog_char n_68[] PROGMEM = "fork "; prog_char n_69[] PROGMEM = "spoon "; prog_char n_70[] PROGMEM = "master "; prog_char n_71[] PROGMEM = "slave "; prog_char n_72[] PROGMEM = "ship "; prog_char n_73[] PROGMEM = "boat "; prog_char n_74[] PROGMEM = "captain "; prog_char n_75[] PROGMEM = "elder "; prog_char n_76[] PROGMEM = "baby "; prog_char n_77[] PROGMEM = "needle "; prog_char n_78[] PROGMEM = "tick "; prog_char n_79[] PROGMEM = "shift "; int nounSyllables[]={ 1,1,1,1,1,1,1,2,2,2, 2,1,1,1,1,1,2,1,2,1, 1,2,2,3,2,1,1,2,2,2, 1,1,1,1,1,1,1,1,1,2, 3,3,2,1,1,3,2,1,1,3, 1,1,2,1,1,3,2,1,1,1, 2,1,1,1,1,1,2,1,1,1, 2,1,1,1,2,2,2,2,1,1 }; PGM_P PROGMEM n_table[]={ n_0, n_1,n_2, n_3, n_4, n_5, n_6, n_7, n_8, n_9, n_10, n_11,n_12, n_13, n_14, n_15, n_16, n_17, n_18, n_19, n_20,n_21,n_22, n_23, n_24, n_25, n_26, n_27, n_28, n_29, n_30,n_31,n_32, n_33, n_34, n_35, n_36, n_37, n_38, n_39, n_40,n_41,n_42, n_43, n_44, n_45, n_46, n_47, n_48, n_49, n_50,n_51,n_52, n_53, n_54, n_55, n_56, n_57, n_58, n_59, n_60,n_61,n_62, n_63, n_64, n_65, n_66, n_67, n_68, n_69, n_70,n_71,n_72, n_73, n_74, n_75, n_76, n_77, n_78, n_79 }; int n_Length=80; //adjectives prog_char adj_0[] PROGMEM = "liquid "; prog_char adj_1[] PROGMEM = "gusty "; prog_char adj_2[] PROGMEM = "flowing "; prog_char adj_3[] PROGMEM = "brutal "; prog_char adj_4[] PROGMEM = "hidden "; prog_char adj_5[] PROGMEM = "bitter "; prog_char adj_6[] PROGMEM = "misty "; prog_char adj_7[] PROGMEM = "simple "; prog_char adj_8[] PROGMEM = "cute "; prog_char adj_9[] PROGMEM = "adorable "; prog_char adj_10[] PROGMEM = "pretty "; prog_char adj_11[] PROGMEM = "perfect "; prog_char adj_12[] PROGMEM = "white "; prog_char adj_13[] PROGMEM = "shiny "; prog_char adj_14[] PROGMEM = "blue "; prog_char adj_15[] PROGMEM = "nasty "; prog_char adj_16[] PROGMEM = "light "; prog_char adj_17[] PROGMEM = "forgiving "; prog_char adj_18[] PROGMEM = "heavy "; prog_char adj_19[] PROGMEM = "diminishing "; prog_char adj_20[] PROGMEM = "independent "; prog_char adj_21[] PROGMEM = "powerful "; prog_char adj_22[] PROGMEM = "constant "; prog_char adj_23[] PROGMEM = "patient "; prog_char adj_24[] PROGMEM = "distant "; prog_char adj_25[] PROGMEM = "mutual "; prog_char adj_26[] PROGMEM = "happy "; prog_char adj_27[] PROGMEM = "gentle "; prog_char adj_28[] PROGMEM = "warming "; prog_char adj_29[] PROGMEM = "smiling "; prog_char adj_30[] PROGMEM = "admirable "; prog_char adj_31[] PROGMEM = "funny "; prog_char adj_32[] PROGMEM = "giant "; prog_char adj_33[] PROGMEM = "succinct "; prog_char adj_34[] PROGMEM = "fleeting "; prog_char adj_35[] PROGMEM = "wise "; prog_char adj_36[] PROGMEM = "awful "; prog_char adj_37[] PROGMEM = "awesome "; prog_char adj_38[] PROGMEM = "anxious "; prog_char adj_39[] PROGMEM = "abnormal "; int adjSyllables[]={ 2,2,2,2,2,2,2,2,1,4, 2,2,1,2,1,2,1,3,2,4, 4,3,2,2,2,3,2,2,2,2, 4,2,2,2,2,1,2,2,2,3 }; PGM_P PROGMEM adj_table[]={ adj_0, adj_1, adj_2, adj_3, adj_4, adj_5, adj_6, adj_7,adj_8,adj_9 , adj_10,adj_11, adj_12, adj_13, adj_14, adj_15, adj_16, adj_17, adj_18, adj_19, adj_20,adj_21, adj_22, adj_23, adj_24, adj_25, adj_26, adj_27, adj_28, adj_29, adj_30,adj_31, adj_32, adj_33, adj_34, adj_35, adj_36, adj_37, adj_38, adj_39 }; int adj_Length=40; //verbs prog_char verb_0[] PROGMEM = "shakes "; prog_char verb_1[] PROGMEM = "drifts "; prog_char verb_2[] PROGMEM = "has stopped "; prog_char verb_3[] PROGMEM = "struggles "; prog_char verb_4[] PROGMEM = "whispers "; prog_char verb_5[] PROGMEM = "grows "; prog_char verb_6[] PROGMEM = "flies "; prog_char verb_7[] PROGMEM = "rips "; prog_char verb_8[] PROGMEM = "shears "; prog_char verb_9[] PROGMEM = "hugs "; prog_char verb_10[] PROGMEM = "kisses "; prog_char verb_11[] PROGMEM = "touches "; prog_char verb_12[] PROGMEM = "skips "; prog_char verb_13[] PROGMEM = "hops "; prog_char verb_14[] PROGMEM = "smiles "; prog_char verb_15[] PROGMEM = "rolls "; prog_char verb_16[] PROGMEM = "brings "; prog_char verb_17[] PROGMEM = "speaks "; prog_char verb_18[] PROGMEM = "sees "; prog_char verb_19[] PROGMEM = "fights "; prog_char verb_20[] PROGMEM = "breaks "; prog_char verb_21[] PROGMEM = "brings "; prog_char verb_22[] PROGMEM = "flips "; prog_char verb_23[] PROGMEM = "rocks "; prog_char verb_24[] PROGMEM = "mocks "; prog_char verb_25[] PROGMEM = "forges "; prog_char verb_26[] PROGMEM = "spins "; prog_char verb_27[] PROGMEM = "juggles "; prog_char verb_28[] PROGMEM = "links "; prog_char verb_29[] PROGMEM = "destroys "; prog_char verb_30[] PROGMEM = "folds "; prog_char verb_31[] PROGMEM = "bends "; prog_char verb_32[] PROGMEM = "twists "; prog_char verb_33[] PROGMEM = "splits "; prog_char verb_34[] PROGMEM = "drops "; prog_char verb_35[] PROGMEM = "spills "; prog_char verb_36[] PROGMEM = "spreads "; prog_char verb_37[] PROGMEM = "collects "; prog_char verb_38[] PROGMEM = "gathers "; prog_char verb_39[] PROGMEM = "scatters "; prog_char verb_40[] PROGMEM = "arranges "; prog_char verb_41[] PROGMEM = "repairs "; prog_char verb_42[] PROGMEM = "discards "; prog_char verb_43[] PROGMEM = "surrounds "; prog_char verb_44[] PROGMEM = "weaves "; prog_char verb_45[] PROGMEM = "erases "; prog_char verb_46[] PROGMEM = "draws "; prog_char verb_47[] PROGMEM = "forces "; prog_char verb_48[] PROGMEM = "continues "; prog_char verb_49[] PROGMEM = "floods "; prog_char verb_50[] PROGMEM = "cuts "; prog_char verb_51[] PROGMEM = "skims "; prog_char verb_52[] PROGMEM = "flows "; prog_char verb_53[] PROGMEM = "smears "; prog_char verb_54[] PROGMEM = "supports "; prog_char verb_55[] PROGMEM = "suspends "; prog_char verb_56[] PROGMEM = "hangs "; prog_char verb_57[] PROGMEM = "brings "; prog_char verb_58[] PROGMEM = "pushes "; prog_char verb_59[] PROGMEM = "drains "; int verbSyllables[]={ 1,1,2,2,2,1,1,1,1,1, 2,2,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,2,2,2, 3,2,2,2,1,3,1,2,3,1, 1,1,1,1,2,2,1,1,2,1 }; int verb_Length=30; PGM_P PROGMEM verb_table[]={ verb_0,verb_1,verb_2,verb_3,verb_4,verb_5,verb_6,verb_7,verb_8,verb_9, verb_10,verb_11,verb_12,verb_13,verb_14 ,verb_15 ,verb_16,verb_17 ,verb_18,verb_19, verb_20,verb_21,verb_22,verb_23,verb_24 ,verb_25 ,verb_26,verb_27 ,verb_28,verb_29 }; //articles prog_char art_0[] PROGMEM = "a "; prog_char art_1[] PROGMEM = "an "; prog_char art_2[] PROGMEM = "this "; prog_char art_3[] PROGMEM = "that "; prog_char art_4[] PROGMEM = "either "; prog_char art_5[] PROGMEM = "which "; prog_char art_6[] PROGMEM = "the "; int artSyllables[]={ 1,1,1,1,2,1}; PGM_P PROGMEM art_table[]={ art_0,art_1,art_2,art_3,art_4,art_5,art_6}; int art_Length=7; //prepositions prog_char prep_0[] PROGMEM = "of "; prog_char prep_1[] PROGMEM = "to "; prog_char prep_2[] PROGMEM = "in "; prog_char prep_3[] PROGMEM = "for "; prog_char prep_4[] PROGMEM = "on "; prog_char prep_5[] PROGMEM = "from "; prog_char prep_6[] PROGMEM = "with "; prog_char prep_7[] PROGMEM = "as "; prog_char prep_8[] PROGMEM = "by "; prog_char prep_9[] PROGMEM = "like "; prog_char prep_10[] PROGMEM = "since "; prog_char prep_11[] PROGMEM = "through "; prog_char prep_12[] PROGMEM = "towards "; prog_char prep_13[] PROGMEM = "with "; prog_char prep_14[] PROGMEM = "until "; prog_char prep_15[] PROGMEM = "upon "; prog_char prep_16[] PROGMEM = "with "; prog_char prep_17[] PROGMEM = "but "; prog_char prep_18[] PROGMEM = "before "; prog_char prep_19[] PROGMEM = "against "; int prepSyllables[]={ 1,1,1,1,1,1,1,1,1,1, 1,1,2,1,2,2,1,1,2,2 }; PGM_P PROGMEM prep_table[]={ prep_0,prep_1,prep_2,prep_3,prep_4,prep_5,prep_6,prep_7,prep_8,prep_9, prep_10,prep_11,prep_12,prep_13,prep_14,prep_15,prep_16,prep_17,prep_18,prep_19 }; int prep_Length=20; //////////////////////////////////////////////////// // make sure this is large enough for the largest string it must hold char bufferA[15]; char bufferB[15]; char bufferC[15]; char bufferD[15]; char bufferE[15]; char bufferF[15]; char bufferG[15]; char bufferH[15]; char bufferI[15]; char bufferJ[15]; char bufferK[15]; char bufferL[15]; int form; int r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12; //random numbers int line0Total,line1Total,line2Total; //haiku syllable line totals boolean goHome=false; //go to top of program boolean newForm=true; int scrollCount=0; //tilt int x0, y0, x, y; boolean zero=false; long resTimer=0; //sensor timer long tiltTimer=0; void clearBuffers(){ for( int i=0;i<15;i++){ bufferA[i]=NULL; bufferB[i]=NULL; bufferC[i]=NULL; bufferD[i]=NULL; bufferE[i]=NULL; bufferF[i]=NULL; bufferG[i]=NULL; bufferH[i]=NULL; bufferI[i]=NULL; bufferJ[i]=NULL; bufferK[i]=NULL; bufferL[i]=NULL; } } void reset(){ if(goHome==false){ fadeOut(); clearLCD(); //while( checkShake() )delay(100); //reset line totals line0Total=0; line1Total=0; line2Total=0; clearBuffers(); newForm=true; goHome=true; form=getRandom(3) ; delay(50); } } void setup(){ pinMode(2,OUTPUT); Serial.begin(9600); //set display brightness Serial.print(124,BYTE);//command header Serial.print(129,BYTE);//display brightness low randomSeed((analogRead(3)+analogRead(1)+analogRead(2)+analogRead(0))); //sparkfun splash toggle //Serial.print(124,BYTE);//command header //Serial.print(9,BYTE);//toggle splash } //fill in the buffer with generated haiku forms void formBuffer(int form, int line){ int lineTotal; if(form==0){ lineTotal=0; //generate random values to select words if(line==0){ while (lineTotal!=5){//continue random selection until syllable total is 5 //article adjective noun int ra=getRandom(art_Length) ; int rb=getRandom(adj_Length); int rc=getRandom(n_Length); strcpy_P(bufferA, (char*)pgm_read_word(&(art_table[ra] ))); // Necessary casts and dereferencing, just copy. strcpy_P(bufferB, (char*)pgm_read_word(&(adj_table[rb] ))); strcpy_P(bufferC, (char*)pgm_read_word(&(n_table[rc] ))); switchArticle(bufferA,bufferB); //check syllable count lineTotal=artSyllables[ra]+adjSyllables[rb]+nounSyllables[rc]; } } else if(line==1){ while (lineTotal!=7){//continue random selection until syllable total is 5 //article noun verb preposition article noun int ra=getRandom(art_Length) ; int rb=getRandom(n_Length); int rc=getRandom(verb_Length); int rd=getRandom(prep_Length) ; int re=getRandom(art_Length); int rf=getRandom(n_Length); strcpy_P(bufferD, (char*)pgm_read_word(&(art_table[ra] ))); strcpy_P(bufferE, (char*)pgm_read_word(&(n_table[rb] ))); strcpy_P(bufferF, (char*)pgm_read_word(&(verb_table[rc] ))); strcpy_P(bufferG, (char*)pgm_read_word(&(prep_table[rd] ))); strcpy_P(bufferH, (char*)pgm_read_word(&(art_table[re] ))); strcpy_P(bufferI, (char*)pgm_read_word(&(n_table[rf] ))); switchArticle(bufferD,bufferE); switchArticle(bufferH,bufferI); lineTotal=artSyllables[ra]+nounSyllables[rb]+verbSyllables[rc]+prepSyllables[rd]+artSyllables[re]+nounSyllables[rf]; } } else if(line==2){ while (lineTotal!=5){//continue random selection until syllable total is 5 //adjective adjective noun int ra=getRandom(adj_Length) ; int rb=getRandom(adj_Length); int rc=getRandom(n_Length); strcpy_P(bufferJ, (char*)pgm_read_word(&(adj_table[ra] ))); strcpy_P(bufferK, (char*)pgm_read_word(&(adj_table[rb] ))); strcpy_P(bufferL, (char*)pgm_read_word(&(n_table[rc] ))); lineTotal=adjSyllables[ra]+adjSyllables[rb]+nounSyllables[rc]; } } } //form2: if(form==1){ lineTotal=0; if(line==0){ while (lineTotal!=5){ //noun preposition article noun int ra=getRandom(n_Length) ; int rb=getRandom(prep_Length); int rc=getRandom(art_Length); int rd=getRandom(n_Length) ; strcpy_P(bufferA, (char*)pgm_read_word(&(n_table[ra] ))); strcpy_P(bufferB, (char*)pgm_read_word(&(prep_table[rb] ))); strcpy_P(bufferC, (char*)pgm_read_word(&(art_table[rc] ))); strcpy_P(bufferD, (char*)pgm_read_word(&(n_table[rd] ))); switchArticle(bufferC,bufferD); lineTotal=nounSyllables[ra]+prepSyllables[rb]+artSyllables[rc]+nounSyllables[rd]; } } else if(line==1){ while (lineTotal!=7){ int ra=getRandom(art_Length) ; int rb=getRandom(adj_Length); int rc=getRandom(n_Length); int rd=getRandom(prep_Length) ; int re=getRandom(art_Length); int rf=getRandom(n_Length); strcpy_P(bufferE, (char*)pgm_read_word(&(art_table[ra] ))); strcpy_P(bufferF, (char*)pgm_read_word(&(adj_table[rb] ))); strcpy_P(bufferG, (char*)pgm_read_word(&(n_table[rc] ))); strcpy_P(bufferH, (char*)pgm_read_word(&(prep_table[rd] ))); strcpy_P(bufferI, (char*)pgm_read_word(&(art_table[re] ))); strcpy_P(bufferJ, (char*)pgm_read_word(&(n_table[rf] ))); switchArticle(bufferE,bufferF); switchArticle(bufferI,bufferJ); lineTotal=artSyllables[ra]+adjSyllables[rb]+nounSyllables[rc]+prepSyllables[rd]+artSyllables[re]+nounSyllables[rf]; } } else if(line==2){ while (lineTotal!=5){ int ra=getRandom(adj_Length) ; int rb=getRandom(n_Length); strcpy_P(bufferK, (char*)pgm_read_word(&(adj_table[ra] ))); strcpy_P(bufferL, (char*)pgm_read_word(&(n_table[rb] ))); switchArticle(bufferK,bufferL); lineTotal=adjSyllables[ra]+nounSyllables[rb]; } } } if(form==2){ lineTotal=0; if(line==0){ while (lineTotal!=5){ //article adjective adjective noun int ra=getRandom(art_Length) ; int rb=getRandom(adj_Length); int rc=getRandom(adj_Length); int rd=getRandom(n_Length) ; strcpy_P(bufferA, (char*)pgm_read_word(&(art_table[ra] ))); strcpy_P(bufferB, (char*)pgm_read_word(&(adj_table[rb] ))); strcpy_P(bufferC, (char*)pgm_read_word(&(adj_table[rc] ))); strcpy_P(bufferD, (char*)pgm_read_word(&(n_table[rd] ))); switchArticle(bufferA,bufferB); lineTotal=artSyllables[ra]+adjSyllables[rb]+adjSyllables[rc]+nounSyllables[rd]; } } else if(line==1){ while (lineTotal!=7){ //preposition article adjective noun int ra=getRandom(prep_Length) ; int rb=getRandom(art_Length); int rc=getRandom(adj_Length); int rd=getRandom(n_Length) ; strcpy_P(bufferE, (char*)pgm_read_word(&(prep_table[ra] ))); strcpy_P(bufferF, (char*)pgm_read_word(&(art_table[rb] ))); strcpy_P(bufferG, (char*)pgm_read_word(&(adj_table[rc] ))); strcpy_P(bufferH, (char*)pgm_read_word(&(n_table[rd] ))); switchArticle(bufferF,bufferG); lineTotal=prepSyllables[ra]+artSyllables[rb]+adjSyllables[rc]+nounSyllables[rd]; } } else if(line==2){ while (lineTotal!=5){ //article noun verb int ra=getRandom(art_Length) ; int rb=getRandom(n_Length); int rc=getRandom(verb_Length); strcpy_P(bufferI, (char*)pgm_read_word(&(adj_table[ra] ))); strcpy_P(bufferJ, (char*)pgm_read_word(&(n_table[rb] ))); strcpy_P(bufferK, (char*)pgm_read_word(&(verb_table[rc] ))); lineTotal=adjSyllables[ra]+nounSyllables[rb]+verbSyllables[rc]; } } } } int getRandom( int length ){ randomSeed((analogRead(3)+analogRead(1)+analogRead(2)+analogRead(0))); delay(5); return random(length); } int printBuffer(int pos, char* buffer){ int j=0; int cursor; //print each character from buffer while not NULL while(buffer[j]!=NULL && goHome==false){ cursor=pos+j; //trickle left text int k; if(tiltLeft()&& goHome==false){ k=15; while(cursor+k>=cursor){ k--; cursorPos(cursor+k+1); Serial.print( buffer[j]); scrollDelay(); cursorPos(cursor+k+1); Serial.print(' '); } cursorPos(cursor); Serial.print( buffer[j] ); //scroll if text runs off if(cursor>16 && cursor<64){ scrollL(); scrollCount++; } if( cursor>80+scrollCount ) { scrollL(); } j++; } else if (tiltRight() && j>0 && goHome==false){ k=-1; while(cursor<64 && cursor+k<=15 || cursor>=64 && cursor+k<=79+scrollCount){ k++; cursorPos(cursor+k-1); Serial.print( buffer[j-1]); scrollDelay(); cursorPos(cursor+k-1); Serial.print(' '); } j--; if(j<0)j=0; } //pause if flat while(tiltLeft()==false && tiltRight()==false){ delay(5); } if(checkShake()&&goHome==false){ reset(); break; } } //pause after each word long t=millis(); while(millis()-t50){ readTilt(); if(x<-5){ tilt=true; } else{ tilt=false; } // tiltTimer=millis(); //} return tilt; } boolean tiltRight(){ boolean tilt; //if(millis()-tiltTimer>50){ readTilt(); if(x>5){ tilt=true; } else{ tilt=false; } //tiltTimer=millis(); // } return tilt; } void switchArticle(char* article, char* object){ if(checkVowel(object[0])){ if (article[0]=='a' && article[1]==' ' && article[1]==NULL){ article[1]=='n'; article[2]==' '; //space after text article[3]==NULL; //null for end of characters } } else{ if (article[0]=='a' && article[1]=='n' && article[2]==' ' && article[3]==NULL){ article[1]=' '; article[2]=NULL; } } } boolean checkVowel(char buffer){ boolean check; if(buffer=='a' || buffer=='e' || buffer=='i' || buffer=='o' || buffer=='u'){ check=true; } else check=false; return check; } boolean checkShake(){ boolean check; int thres=150; if(millis()-resTimer>500){ readTilt(); if(y>thres || y<-thres || x>thres || x<-thres){ // reset(); check=true; resTimer=millis(); } else{ check=false; } } return check; } void splash(){ fadeIn(); char ags[]={ "AGS : HaikuShake V02" }; Serial.print(ags); delay(1000); fadeOut(); clearLCD(); cursorPos(0); delay(100); } void readTilt(){ x=analogRead(0)-x0; //reads and represents acceleration X y=analogRead(1)-y0; //reads and represents acceleration Y } //zero all tilt sensors void setZero(){ x0=analogRead(0); y0=analogRead(1); zero=true; } //functions for sparkfun serial enabled SerLCD v2.5////////////// int brightMax=5;//0-28 void fadeIn(){ long fade=0; while(fade<=brightMax){ Serial.print(124,BYTE);//command header int brightness=129+fade; Serial.print(brightness,BYTE);//129-157 brightness delay(10);//fade speed fade++; } } void fadeOut(){ long fade=0; while(fade<=brightMax){ Serial.print(124,BYTE);//command header int brightness=129+brightMax-fade; Serial.print(brightness,BYTE); delay(10); fade++; } } void selectLineOne(){ //puts the cursor at line 0 char 0. Serial.print(0xFE, BYTE); //command flag Serial.print(128, BYTE); //position } void selectLineTwo(){ //puts the cursor at line 0 char 0. Serial.print(0xFE, BYTE); //command flag Serial.print(192, BYTE); //position } void clearLCD(){ Serial.print(0xFE, BYTE); //command flag Serial.print(0x01, BYTE); //clear command. } void backlightOn(){ //turns on the backlight Serial.print(0x7C, BYTE); //command flag for backlight stuff Serial.print(157, BYTE); //light level. } void backlightOff(){ //turns off the backlight Serial.print(0x7C, BYTE); //command flag for backlight stuff Serial.print(128, BYTE); //light level for off. } void serCommand(){ //a general function to call the command flag for issuing all other commands Serial.print(0xFE, BYTE); } void cursorR(){ Serial.print(0xFE, BYTE); Serial.print(0x14, BYTE); } void cursorL(){ Serial.print(0xFE, BYTE); Serial.print(0x10, BYTE); } void scrollR(){ Serial.print(0xFE, BYTE); Serial.print(0x1C, BYTE); } void scrollL(){ Serial.print(0xFE, BYTE); Serial.print(0x18, BYTE); } void cursorPos(int pos){ Serial.print(0xFE, BYTE); Serial.print(128+pos, BYTE); }