Tic Tac Toe-spelvisitekaartje
Componenten en benodigdheden
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Benodigde gereedschappen en machines
| ||||
| ||||
| ||||
|
Apps en online services
|
Over dit project
Hallo daar
In deze tutorial laat ik je zien hoe je een visitekaartje/visitekaartje maakt. Niet zomaar een visitekaartje. Dit is een PCB maar Net als een normaal visitekaartje. U kunt de EDISON SCIENCE CORNER-naam, het logo, sociale media-pictogrammen en een QR-code zien. De QR-code leidt je naar mijn YouTube-kanaal. Maar aan de andere kant zie je een circuit. Dit is een Tic Tac Toe spel circuit. Tic Tac Toe is een spel voor twee spelers. Ook bekend als X O Game . twee spelers die om de beurt de velden in een raster van drie bij drie markeren met X of O. De speler die erin slaagt drie van hun merktekens in een horizontale, verticale of diagonale rij te plaatsen, is de winnaar. Meestal trekt het spel gelijk. hier heb ik X en O vervangen door kleuren en ook de traditionele 3*3 veranderd in 4*4. Dus een totaal van 16 leds en 16 schakelaars elke schakelaar vertegenwoordigen corresponderende led. Speler één is groen van kleur en speler 2 rood. Dat is het, ik denk dat je het hebt.
Laten we nu kijken hoe we dit kunnen maken.
Stap 1:Ontwerpen en printen van de print
Dit is dus het spelcircuit dat ik heb ontworpen met behulp van easyeda . hier gebruik ik atmega328 als het hart van dit project. Daarna heb ik de schakeling omgezet in PCB. Ik ontwierp de print met een afmeting van 89mm*50mm omdat dit de standaard afmeting is van visitekaartjes. Ik heb de afbeeldingstool van easyeda gebruikt om het ontwerp te maken. dit gaat gewoon over kunst die je kunt maken met je ideeën. Na het ontwerpen van de print heb ik het Gerber bestand gedownload. Toen ging ik naar jlcpcb.com. Ik kies voor JLCPCB omdat ze slechts $ 2 bieden voor 5 PCB's. Om PCB's te bestellen Klik op bestel nu en selecteer uw Gerber-bestand. na het uploaden heb ik de zwarte kleur .8 mm dikte gekozen en de bestelling geplaatst. na 2 weken ontving ik de printplaat. De PCB heeft slechts een dikte van 0,8 mm, maar de kwaliteit is perfect zoals ik had verwacht.
Stap 2:Benodigde componenten
ATMEGA328P-AU* 1
0805 condensator 22pf *2
0805 condensator 100nF* 2
SMD WS2812B-B*16
0805 LED SMD* 2
0805 weerstanden 1K* 3
0805 weerstanden10K 1
16MHZ*1
micro USB Vrouwelijk*1
download stuklijst vanaf hier
Stap 3:Solderen
na het pakken van alle componenten begon ik te solderen
Ik ben begonnen met de micro-USB-poort. Daarna heb ik alle andere componenten gesoldeerd. Na het solderen van de stuurschakeling ben ik begonnen met het solderen van neopixel LED's en daarna heb ik de bijbehorende schakelaars gesoldeerd. Na 1 uur was ik klaar met solderen en nu ziet onze PCB er zo uit.
Stap 4:Programmeren
na het voltooien van het solderen heb ik de USB-kabel aangesloten en getest. Nu is het tijd om de code te uploaden. Ik heb de spi-pinnen aangesloten op een isp Arduino en de schets geüpload
DOWNLOAD DE CODE VAN HIER
Stap 5:SPEEL EN GENIET
Zo heb ik een visitekaartje gemaakt met 4*4 boter-kaas-en-eieren spelprintje. Je kunt het circuit, de code, de gerbers downloaden via de links. Ik hoop dat je genoten hebt van en iets hebt geleerd van mijn tutorial.
Code
- code
codeC/C++
//edison science corner#include#include #define LED_PIN 5#define NUM_LEDS 16#define LED_TYPE WS2812B#define COLOR_ORDER GBR#define BRIGHTNESS 30CRGB leds[NUM_LEDS];int player=1;int n,i,e=0,j=0;char a[16]={'1','2','3','4','5','6','7', '8','9','10','11','12','13','14','15','16'};char key;int w=0;const byte RIJEN =4; // vier rijenconst byte COLS =4; //vier kolommen//definieer de bekkens op de knoppen van de keypadschar hexaKeys[ROWS][COLS] ={ {{'1','2','3','A'}, {'4','5' ,'6','B'}, {'7','8','9','C'}, {'*','0','#','D'}};byte rowPins[ RIJEN] ={A0,A1,A2,A3}; // verbind met de rij pinouts van de keypadbyte colPins [COLS] ={A4,A5,2,3}; // verbind met de kolom pinouts van het toetsenbord Keypad customKeypad =Keypad (makeKeymap (hexaKeys), rowPins, colPins, RIJEN, COLS); void setup(){ Serial.begin(9600); LEDS.addLeds (leds, NUM_LEDS); FastLED.setHelderheid (HELDERHEID); for(int m=0;m<3;m++) { leds[0].setRGB(0, 255, 0); leds [1].setRGB(0, 255, 0); leds [2].setRGB(0, 255, 0); leds [3].setRGB(0, 255, 0); leds [4].setRGB(0, 255, 0); leds [5].setRGB(0, 255, 0); leds[6].setRGB(0, 255,0 ); leds[7].setRGB(0, 255, 0); leds[8].setRGB(0, 255, 0); leds[9].setRGB(0, 255, 0); leds [10].setRGB(0, 255, 0); leds[11].setRGB(0, 255, 0); leds[12].setRGB(0, 255, 0); leds[13].setRGB(0, 255, 0); leds[14].setRGB(0, 255, 0); leds[15].setRGB(0, 255, 0); FastLED.show(); vertraging (500); leds[0].setRGB(0, 0, 225); leds[1].setRGB(0, 0, 225); leds [2].setRGB(0, 0, 225); leds[3].setRGB(0, 0, 225); leds[4].setRGB(0, 0, 225); leds[5].setRGB(0, 0, 225); leds[6].setRGB(0, 0, 225); leds[7].setRGB(0, 0, 225); leds[8].setRGB(0, 0, 225); leds[9].setRGB(0, 0, 225); leds[10].setRGB(0, 0, 225); leds[11].setRGB(0, 0, 225); leds[12].setRGB(0, 0, 225); leds[13].setRGB(0, 0, 225); leds[14].setRGB(0, 0, 225); leds[15].setRGB(0, 0, 225); FastLED.show(); vertraging (500); } FastLED.clear(); FastLED.show();} void loop(){ key =customKeypad.getKey(); if (key &&player==1) { Serial.println("\nP1"); Seriële.println(sleutel); n=getal(sleutel); Serieel.println(n); leds[n].setRGB(0, 255, 0); FastLED.show(); een[n]='X'; Serieel.println(a[n]); w=controleer(a,n); if(w==1) { Serial.println("Speler 1 wint!"); while(1) { leds[0].setRGB(0, 255, 0); leds [1].setRGB(0, 255, 0); leds [2].setRGB(0, 255, 0); leds [3].setRGB(0, 255, 0); leds [4].setRGB(0, 255, 0); leds [5].setRGB(0, 255, 0); leds[6].setRGB(0, 255,0 ); leds[7].setRGB(0, 255, 0); leds[8].setRGB(0, 255, 0); leds[9].setRGB(0, 255, 0); leds [10].setRGB(0, 255, 0); leds[11].setRGB(0, 255, 0); leds[12].setRGB(0, 255, 0); leds[13].setRGB(0, 255, 0); leds[14].setRGB(0, 255, 0); leds[15].setRGB(0, 255, 0); FastLED.show(); vertraging (500); FastLED.clear(); FastLED.show(); vertraging (500); } } speler++; vertraging (1000); } vertraging(20); sleutel =customKeypad.getKey(); if (key &&player==2) { Serial.println("\nP2"); Seriële.println(sleutel); n=getal(sleutel); Serieel.println(n); leds[n].setRGB(0, 0, 225); FastLED.show(); een[n]='0'; Serieel.println(a[n]); w=controleer(a,n); if(w==2) { Serial.println("Speler 2 wint!"); while(1) { leds[0].setRGB(0, 0, 225); leds[1].setRGB(0, 0, 225); leds [2].setRGB(0, 0, 225); leds[3].setRGB(0, 0, 225); leds[4].setRGB(0, 0, 225); leds[5].setRGB(0, 0, 225); leds[6].setRGB(0, 0, 225); leds[7].setRGB(0, 0, 225); leds[8].setRGB(0, 0, 225); leds[9].setRGB(0, 0, 225); leds[10].setRGB(0, 0, 225); leds[11].setRGB(0, 0, 225); leds[12].setRGB(0, 0, 225); leds[13].setRGB(0, 0, 225); leds[14].setRGB(0, 0, 225); leds[15].setRGB(0, 0, 225); FastLED.show(); vertraging (500); FastLED.clear(); FastLED.show(); vertraging (500); } } e++; speler--; vertraging (1000); } if(e==8) { Serial.println("Game Draw"); while(1) { leds[0].setRGB(255, 0, 0); leds [1].setRGB(255, 0, 0); leds [2].setRGB(255, 0, 0); leds[3].setRGB(255, 0, 0); leds [4].setRGB(255, 0, 0); leds [5].setRGB(255, 0, 0); leds [6].setRGB(255, 0, 0); leds[7].setRGB(255, 0, 0); leds [8].setRGB(255, 0, 0); leds[9].setRGB(255, 0, 0); leds [10].setRGB(255, 0, 0); leds[11].setRGB(255, 0, 0); leds[12].setRGB(255, 0, 0); leds [13].setRGB(255, 0, 0); leds [14].setRGB(255, 0, 0); leds [15].setRGB(255, 0, 0); FastLED.show(); vertraging (1000); FastLED.clear(); FastLED.show(); vertraging (500); } } delay(20);}int number(char keyn){ if(keyn =='1') return 0; if(keyn =='2') retourneer 1; if(keyn =='3') retourneer 2; if(toets =='A') retourneert 3; if(keyn =='4') retourneer 4; if(keyn =='5') retourneert 5; if(keyn =='6') retourneer 6; if(keyn =='B') retourneer 7; if(keyn =='7') retourneer 8; if(keyn =='8') retourneer 9; if(keyn =='9') retourneer 10; if(keyn =='C') retourneert 11; if(key =='*') retourneer 12; if(keyn =='0') retourneer 13; if(keyn =='#') retourneer 14; if(keyn =='D') return 15;}int check(char a[16],int n){ if(a[0]=='X' &&a[1]=='X' &&a[ 2]=='X' &&a[3]=='X') retourneer 1; if(a[0]=='0' &&a[1]=='0' &&a[2]=='0' &&a[3]=='0') retourneer 2; if(a[0]=='X' &&a[4]=='X' &&a[8]=='X' &&a[12]=='X') retourneer 1; if(a[0]=='0' &&a[4]=='0' &&a[8]=='0' &&a[12]=='0') retourneer 2; if(a[0]=='X' &&a[5]=='X' &&a[10]=='X' &&a[15]=='X') retourneer 1; if(a[0]=='0' &&a[5]=='0' &&a[10]=='0' &&a[15]=='0') retourneer 2; if(a[1]=='X' &&a[5]=='X' &&a[9]=='X' &&a[13]=='X') retourneer 1; if(a[1]=='0' &&a[5]=='0' &&a[9]=='0' &&a[13]=='0') retourneer 2; if(a[2]=='X' &&a[6]=='X' &&a[10]=='X' &&a[14]=='X') retourneer 1; if(a[2]=='0' &&a[6]=='0' &&a[10]=='0' &&a[14]=='0') retourneer 2; if(a[3]=='X' &&a[7]=='X' &&a[11]=='X' &&a[15]=='X') retourneer 1; if(a[3]=='0' &&a[7]=='0' &&a[11]=='0' &&a[15]=='0') return 2; if(a[3]=='X' &&a[6]=='X' &&a[9]=='X' &&a[12]=='X') retourneer 1; if(a[3]=='0' &&a[6]=='0' &&a[9]=='0' &&a[12]=='0') retourneer 2; if(a[4]=='X' &&a[5]=='X' &&a[6]=='X' &&a[7]=='X') retourneer 1; if(a[4]=='0' &&a[5]=='0' &&a[6]=='0' &&a[7]=='0') retourneer 2; if(a[8]=='X' &&a[9]=='X' &&a[10]=='X' &&a[11]=='X') retourneer 1; if(a[8]=='0' &&a[9]=='0' &&a[10]=='0' &&a[11]=='0') retourneer 2; if(a[12]=='X' &&a[13]=='X' &&a[14]=='X' &&a[15]=='X') retourneer 1; if(a[12]=='0' &&a[13]=='0' &&a[14]=='0' &&a[15]=='0') return 2;}
Schema's
Productieproces
- Arduino-gyroscoopspel met MPU-6050
- Multitemperatuursensor
- DIY 37 LED Roulette Game
- Arduino-gamecontroller
- Arduino Due TIC TAC TOE met touchscreen
- MotionSense
- 3D-printer brandveiligheid
- Pixel Chaser-game
- Arduino afstotende elektromagnetische levitatie
- Grijperbot met afstandsbediening
- CoroFence - Thermische Detector🖖