ENIB 2022 - groupe C : Snarkade : Différence entre versions
(Page créée avec « ==Que fait ce projet ? == Tentative de création d'une petite borne d'arcade avec le jeu Snake. Étant donné que les matrices de LED utilisées pour le projet ne marche... ») |
|||
Ligne 1 : | Ligne 1 : | ||
+ | [[Fichier:Boite snarkade.jpg|vignette]] | ||
+ | |||
==Que fait ce projet ? == | ==Que fait ce projet ? == | ||
Ligne 12 : | Ligne 14 : | ||
* 1 Arduino Nano | * 1 Arduino Nano | ||
* Pleins de cables | * Pleins de cables | ||
+ | |||
+ | ==Schéma électronique== | ||
+ | |||
+ | [[Fichier:Schéma électronique snarkade.jpg|600px]] | ||
==Code== | ==Code== |
Version du 17 janvier 2022 à 16:16
Sommaire
Que fait ce projet ?
Tentative de création d'une petite borne d'arcade avec le jeu Snake.
Étant donné que les matrices de LED utilisées pour le projet ne marche qu'à moitié, le projet n'a pas pu être terminé.
Liste des composants
- 4 matrices de LED 8x8 1088AS
- 6 boutons
- 1 interrupteur
- 1 Arduino Nano
- Pleins de cables
Schéma électronique
Code
Programme principal
#include <Vector.h> #include "snake.h" #include "LedControl.h" snake::snake(int l = 1, char dir ='r' , Vector<int> initial_pos ={}): lenght(l),direction(dir) { initial_pos.push_back(8); initial_pos.push_back(8); body.push_back(initial_pos); }; //pin 2 pour gauche, pin 3 pour bas, pin 4 pour haut et pin 5 pour droite void snake::change_direction(){ if(digitalRead(2) == true){ direction = 'l'; }else{if(digitalRead(3) == true){ direction = 'd'; }else{if(digitalRead(4) == true){ direction = 'u'; }else{if(digitalRead(5) == true){ direction = 'r';}}} } }; void snake::grow(){ lenght += 1; Vector<int> v; switch(direction) { case 'u': v.push_back(body[0][0]); v.push_back(body[0][1] + 1); body.push_back(v); break; case 'd': v.push_back(body[0][0]); v.push_back(body[0][1] - 1); body.push_back(v); break; case 'r': v.push_back(body[0][0] + 1); v.push_back(body[0][1]); body.push_back(v); break; case 'l': v.push_back(body[0][0] - 1); v.push_back(body[0][1]); body.push_back(v); break; } v.clear(); }; void snake::move(){ Vector<int> v; Vector<Vector<int>> b; for(long unsigned int a = 1; a < body.size() - 1; a++){ b.push_back(body[a]); } switch(direction) { case 'u': v.push_back(body[0][0]); v.push_back(body[0][1] + 1); b.push_back(v); break; case 'd': v.push_back(body[0][0]); v.push_back(body[0][1] - 1); b.push_back(v); break; case 'r': v.push_back(body[0][0] + 1); v.push_back(body[0][1]); b.push_back(v); break; case 'l': v.push_back(body[0][0] - 1); v.push_back(body[0][1]); b.push_back(v); break; } body.clear(); body = b; v.clear(); }; void snake::death(){ alive = false; }; bool snake::getAlive(){ return alive; } char snake::getDirection(){ return direction; } Vector<Vector<int>> snake::getBody(){ return body; } void snake::setAlive(bool status){ alive = status; } int snake::getLenght(){ return body.size(); } LedControl lc1=LedControl(12,11,10,2); LedControl lc2=LedControl(9,8,7,2); int longueur; int ligne; int colonne; int adresse; void affichageSerpent(snake snake1){ Vector<Vector<int>> corps = snake1.getBody(); longueur = corps.size(); //[0] = x //[1] = y int x,y; for(int i = 0; longueur; i++){ while(corps[i][0]>15){ x = corps[i][0]-16; } while(corps[i][1]>7){ y = corps[i][1]-16; } if(x>7){ adresse=1; } else { adresse=0; } if(y>7){ y-=8; lc2.setLed(adresse,y,x,1); } else{ lc1.setLed(adresse,y,x,1); } } } //////////////////////////////////////////////////////////////// /*int boutons = {2,3,4,5}; bool buttons = {false,false,false,false}; snake snake1; void traitement_bouton(){ for(int h=0,h<4,h++){ int z = digitalRead(boutons[h]); if(z==1){buttons[h]=true;} else if(z==0){buttons[h]=false;} }*/ void setup() { Serial.begin(9600); pinMode(2, INPUT); pinMode(3, INPUT); pinMode(4, INPUT); pinMode(5, INPUT); lc1.shutdown(0,false); lc1.shutdown(1,false); lc1.setIntensity(0,8); lc1.setIntensity(1,8); } void loop() { lc1.setLed(1,5,5,1); delay(500); lc1.setLed(1,5,5,0); delay(500); if(digitalRead(5) == 1){ Serial.print("yay"); } //affichageSerpent(snake1); //snake1.move(); }
Module
#ifndef SNAKE_H #define SNAKE_H #include <Vector.h> class snake{ private: int lenght; char direction; Vector<Vector<int>> body;//de taille 1 à l'initialisation (c-a-d il n'y a qye la tete) bool alive; public: snake(int l = 1,char dir ='r', Vector<int> initial_pos = {}); void change_direction(); void grow(); void move(); void death(); bool getAlive(); char getDirection(); Vector<Vector<int>> getBody(); void setAlive(bool status); int getLenght(); }; #endif