PUNTHOOFT
ArduinoSlang in de matrix
De basis van dit project is de 8x8 LED Matrix uit dit project.
Stel je je een gevaarlijk slang voor. Een hele gevaarlijke slang. Met grote scherpe tanden waar het gif uit druipt. Of met een groot en krachtig lichaam waarmee het je wil wurgen. Gelukkig zit de slang opgesloten op je matrix scherm. Maar hij is als een dolle op zoek naar een weg uit. Hopelijk kan hij niet ontsnappen!
ArduinoBreadboard
Zie beschrijving in het project 8x8 LED Matrix
ArduinoSource code
/* 8x8 snake (C) copyright www.punthooft.nl 2019-2023 */ #define ROW_1 2 #define ROW_2 3 #define ROW_3 4 #define ROW_4 5 #define ROW_5 6 #define ROW_6 7 #define ROW_7 8 #define ROW_8 9 #define COL_1 10 #define COL_2 11 #define COL_3 12 #define COL_4 13 #define COL_5 A0 #define COL_6 A1 #define COL_7 A2 #define COL_8 A3 #define snakelength 5 // Constants const byte rows[] = { ROW_1, ROW_2, ROW_3, ROW_4, ROW_5, ROW_6, ROW_7, ROW_8 }; const byte cols[] = { COL_1,COL_2, COL_3, COL_4, COL_5, COL_6, COL_7, COL_8 }; // Variables int i,j; int delayCounter; int snake[snakelength][2]; // Snake array int headrow; // Row of the head int headcol; // Col of the head int direction; // Direction for some same movement int whattodo; // Setup function runs once when powerup the board and on reset void setup() { for(i=0;i<snakelength;i++) { for(j=0;j<2;j++) { snake[i][j]=0; } } delayCounter=0; headrow=4; headcol=4; direction=2; // Set randomizer randomSeed(analogRead(0)); } // Function to lightup the LED at row, col position void loop() { delayCounter++; delay(1); if (delayCounter>20) { delayCounter=0; if (random(1,4)==2) { // switch direction direction = random(1,5); } switch(direction) { case 1: // right headcol++; if(headcol>7) { headcol=7; direction=2; } break; case 2: // left headcol--; if(headcol<0) { headcol=0; direction=1; } break; case 3: // down headrow++; if(headrow>7) { headrow=7; direction=4; } break; case 4: // up headrow--; if(headrow<0) { headrow=0; direction=3; } break; default: Serial.println("Ooops"); } for(i=snakelength-1;i>0;i--) { snake[i][0]=snake[i-1][0]; snake[i][1]=snake[i-1][1]; } snake[0][0]=headrow; snake[0][1]=headcol; } for(i=0;i<snakelength;i++) { displayAt(snake[i][0],snake[i][1]); } } // Function to display a LED void displayAt(int x,int y) { pinMode(cols[y],OUTPUT); pinMode(rows[x],OUTPUT); digitalWrite(cols[y], HIGH); digitalWrite(rows[x], HIGH); delayMicroseconds(25); digitalWrite(cols[y], LOW); digitalWrite(rows[x], LOW); pinMode(cols[y],INPUT); pinMode(rows[x],INPUT); }
ArduinoOpmerkingen
Bovenin kun je de snakelength aanpassen en je slang nog langer maken.

Copyright 2023 www.punthooft.nl
We do not collect cookies for advertisement. Your data is never send to third parties.