Visitenkarte des Tic-Tac-Toe-Spiels
Komponenten und Verbrauchsmaterialien
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Notwendige Werkzeuge und Maschinen
| ||||
| ||||
| ||||
|
Apps und Onlinedienste
|
Über dieses Projekt
Hallo zusammen
In diesem Tutorial zeige ich Ihnen, wie Sie eine Visitenkarte / Visitenkarte erstellen. Nicht nur eine Visitenkarte. Dies ist eine PCB aber wie eine normale Visitenkarte. Sie können den Namen von EDISON SCIENCE CORNER, das Logo, Social-Media-Symbole und einen QR-Code sehen. Der QR-Code führt Sie zu meinem Youtube-Kanal. Aber auf der gegenüberliegenden Seite sieht man eine Schaltung. Dies ist ein Tic-Tac-Toe Spielschaltung. Tic Tac Toe ist ein Spiel für zwei Spieler. Auch bekannt als X O Game . zwei Spieler, die abwechselnd die Felder in einem Drei-mal-Drei-Raster mit X oder O markieren. Der Spieler, der es schafft, drei seiner Markierungen in einer horizontalen, vertikalen oder diagonalen Reihe zu platzieren, ist der Gewinner. Die meiste Zeit wird das Spiel unentschieden. hier habe ich X und O durch Farben ersetzt und auch das traditionelle 3 * 3 in 4 * 4 geändert. Insgesamt 16 LEDs und 16 Schalter jeder Schalter repräsentieren also die entsprechenden LEDs. Spieler 1 ist grün und Spieler 2 rot. Das ist es, ich glaube, du hast es verstanden.
Sehen wir uns nun an, wie man das macht.
Schritt 1:Design und Druck der Leiterplatte
Das ist also die Spielschaltung, die ich mit easyeda entworfen habe . hier verwende ich atmega328 als Herzstück dieses Projekts. Dann habe ich die Schaltung in PCB umgewandelt. Ich habe die Platine mit einer Abmessung von 89 mm * 50 mm entworfen, da dies die Standardgröße von Visitenkarten ist. Für das Design habe ich das Bild einfügen-Tool von easyeda verwendet. Hier geht es nur um Kunst, die Sie mit Ihren Ideen machen können. Nach dem Entwerfen der Leiterplatte habe ich die Gerber-Datei heruntergeladen. Dann ging ich zu jlcpcb.com. Ich wähle JLCPCB, weil sie nur 2$ für 5 PCBs anbieten. Um Leiterplatten zu bestellen Klicken Sie einfach auf Jetzt bestellen und wählen Sie Ihre Gerber-Datei aus. Nach dem Hochladen wähle ich die schwarze Farbe .8mm Dicke und habe die Bestellung aufgegeben. Nach 2 Wochen habe ich die Platine erhalten. Die Platine hat nur eine Dicke von 0,8 mm, aber die Qualität ist wie erwartet perfekt.
Schritt 2:Benötigte Komponenten
ATMEGA328P-AU* 1
0805 Kondensator 22pf *2
0805 Kondensator 100nF* 2
SMD WS2812B-B*16
0805 LED SMD* 2
0805 Widerstände 1K* 3
0805 Widerstände10K 1
16MHz*1
Micro-USB-Buchse*1
Laden Sie die Stückliste hier herunter
Schritt 3:Löten
Nachdem ich alle Komponenten gepackt hatte, fing ich an zu löten
Ich habe mit dem Micro-USB-Anschluss angefangen. Dann habe ich alle anderen Komponenten gelötet. Nach dem Löten der Steuerschaltung habe ich angefangen, Neopixel-LEDs zu löten und danach habe ich entsprechende Switches gelötet. Nach 1 Stunde habe ich alle Lötarbeiten abgeschlossen und jetzt sieht unsere Platine so aus.
Schritt 4:Programmierung
Nach dem Löten habe ich das USB-Kabel angeschlossen und getestet. Jetzt ist es an der Zeit, den Code hochzuladen. Ich habe die Spi-Pins mit einem ISP-Arduino verbunden und die Skizze hochgeladen
CODE HIER HERUNTERLADEN
Schritt 5:SPIELEN UND GENIESSEN
So habe ich eine Visitenkarte mit 4 * 4 Tic Tac Toe Game PCB gemacht. Sie können die Schaltung, den Code und die Gerber von den Links herunterladen. Ich hoffe, Ihnen hat mein Tutorial gefallen und Sie haben etwas gelernt.
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 ROWS =4; // vier Zeilenconst Byte COLS =4; //vier Spalten // Definieren Sie die Cymbols auf den Tasten des Keypadschar hexaKeys[ROWS][COLS] ={ {'1','2','3','A'}, {'4','5' ,'6','B'}, {'7','8','9','C'}, {'*','0','#','D'}};byte rowPins[ REIHEN] ={A0,A1,A2,A3}; // mit den Zeilen-Pinbelegungen des Keypadbyte verbinden colPins[COLS] ={A4,A5,2,3}; // mit den Spaltenpinbelegungen des Keypads verbindenKeypad customKeypad =Keypad(makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS); Void setup () {Serial.begin (9600); LEDS.addLeds (LEDs, NUM_LEDS); FastLED.setHelligkeit (HELLIGKEIT); 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(); Verzögerung (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(); Verzögerung (500); } FastLED.clear(); FastLED.show();} void loop(){ key =customKeypad.getKey(); wenn (Schlüssel &&Spieler ==1) {Serial.println("\nP1"); Serial.println (Schlüssel); n=Zahl (Schlüssel); Serial.println(n); leds[n].setRGB(0, 255, 0); FastLED.show(); a[n]='X'; Serial.println (a[n]); w=check(a,n); if (w ==1) {Serial.println ( "Spieler 1 gewinnt!"); 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(); Verzögerung (500); FastLED.clear(); FastLED.show(); Verzögerung (500); } } Spieler++; Verzögerung (1000); } Verzögerung (20); key =customKeypad.getKey(); if (Schlüssel &&Spieler==2) {Serial.println("\nP2"); Serial.println (Schlüssel); n=Zahl (Schlüssel); Serial.println(n); leds[n].setRGB(0, 0, 225); FastLED.show(); a[n]='0'; Serial.println (a[n]); w=check(a,n); if (w ==2) {Serial.println ( "Spieler 2 gewinnt!"); 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(); Verzögerung (500); FastLED.clear(); FastLED.show(); Verzögerung (500); } } e++; Spieler--; Verzögerung (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(); Verzögerung (1000); FastLED.clear(); FastLED.show(); Verzögerung (500); } } Verzögerung (20)); if(keyn =='2') 1 zurückgeben; if(keyn =='3') return 2; if(key =='A') return 3; if(keyn =='4') Rückgabe 4; if(keyn =='5') 5 zurückgeben; if(keyn =='6') return 6; if(keyn =='B') return 7; if(keyn =='7') return 8; if(keyn =='8') return 9; if(keyn =='9') Rückgabe 10; if(keyn =='C') return 11; if(key =='*') return 12; if(keyn =='0') Rückgabe 13; if(keyn =='#') return 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') 1 zurückgeben; if(a[0]=='0' &&a[1]=='0' &&a[2]=='0' &&a[3]=='0') return 2; if(a[0]=='X' &&a[4]=='X' &&a[8]=='X' &&a[12]=='X') return 1; if(a[0]=='0' &&a[4]=='0' &&a[8]=='0' &&a[12]=='0') return 2; if(a[0]=='X' &&a[5]=='X' &&a[10]=='X' &&a[15]=='X') return 1; if(a[0]=='0' &&a[5]=='0' &&a[10]=='0' &&a[15]=='0') return 2; if(a[1]=='X' &&a[5]=='X' &&a[9]=='X' &&a[13]=='X') return 1; if(a[1]=='0' &&a[5]=='0' &&a[9]=='0' &&a[13]=='0') return 2; if(a[2]=='X' &&a[6]=='X' &&a[10]=='X' &&a[14]=='X') return 1; if(a[2]=='0' &&a[6]=='0' &&a[10]=='0' &&a[14]=='0') return 2; if(a[3]=='X' &&a[7]=='X' &&a[11]=='X' &&a[15]=='X') return 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') return 1; if(a[3]=='0' &&a[6]=='0' &&a[9]=='0' &&a[12]=='0') return 2; if(a[4]=='X' &&a[5]=='X' &&a[6]=='X' &&a[7]=='X') return 1; if(a[4]=='0' &&a[5]=='0' &&a[6]=='0' &&a[7]=='0') return 2; if(a[8]=='X' &&a[9]=='X' &&a[10]=='X' &&a[11]=='X') return 1; if(a[8]=='0' &&a[9]=='0' &&a[10]=='0' &&a[11]=='0') return 2; if(a[12]=='X' &&a[13]=='X' &&a[14]=='X' &&a[15]=='X') return 1; if(a[12]=='0' &&a[13]=='0' &&a[14]=='0' &&a[15]=='0') Rückgabe 2;}
Schaltpläne
Herstellungsprozess