Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Tic Tac Toe-spelvisitekaartje

Componenten en benodigdheden

Microchip-technologie ATmega328
× 1
LED-strip, NeoPixel Digital RGB
× 1
Tactiele schakelaar, bovenkant bediend
× 1
JLCPCB aangepaste PCB
× 1
Arduino UNO
× 1

Benodigde gereedschappen en machines

Soldeerbout (algemeen)
Soldeerdraad, loodvrij
Soldeervloeistof, solderen
10 St. Jumper Wire Kit, 5 cm lang

Apps en online services

Arduino IDE

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

  1. Arduino-gyroscoopspel met MPU-6050
  2. Multitemperatuursensor
  3. DIY 37 LED Roulette Game
  4. Arduino-gamecontroller
  5. Arduino Due TIC TAC TOE met touchscreen
  6. MotionSense
  7. 3D-printer brandveiligheid
  8. Pixel Chaser-game
  9. Arduino afstotende elektromagnetische levitatie
  10. Grijperbot met afstandsbediening
  11. CoroFence - Thermische Detector🖖