Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Visitenkarte des Tic-Tac-Toe-Spiels

Komponenten und Verbrauchsmaterialien

Mikrochip-Technologie ATmega328
× 1
LED-Streifen, NeoPixel Digital RGB
× 1
Tastschalter, von oben betätigt
× 1
Angepasste JLCPCB-Leiterplatte
× 1
Arduino UNO
× 1

Notwendige Werkzeuge und Maschinen

Lötkolben (generisch)
Lötdraht, bleifrei
Lötflussmittel, Löten
10 Stk. Jumper Wire Kit, 5 cm lang

Apps und Onlinedienste

Arduino-IDE

Ü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

  1. Arduino-Gyroskop-Spiel mit MPU-6050
  2. Multi-Temperatursensor
  3. DIY 37 LED-Roulette-Spiel
  4. Arduino-Gamecontroller
  5. Arduino Due TIC TAC TOE mit Touchscreen
  6. MotionSense
  7. 3D-Drucker Brandschutz
  8. Pixel-Chaser-Spiel
  9. Arduino Repulsive Electromagnetic Levitation
  10. CoroFence - Wärmedetektor🖖