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

Elektronisch schaakbord (4x4 demo-prototype)

Componenten en benodigdheden

Zaaleffectsensor
× 16
Soldeerloze breadboard op ware grootte
× 1
LED (generiek)
× 16
RFID-lezer (algemeen)
125 kHz RFID-lezer en antenne
× 1
Arduino Mega 2560
× 1
RFID-tag 3M
× 2

Benodigde gereedschappen en machines

plexiglas
Glanzend papier
houten planken
Acrylverf (donkergroen en crème) x2
10 mm ronde magneten
Pion en Queen schaakstukken
Soldeerbout en soldeermaterialen

Apps en online services

Arduino IDE

Over dit project

Hallo makers,

Ik ben Tahir Miriyev, afgestudeerd in 2018 aan de Middle East Technical University, Ankara/Turkije. Ik heb Toegepaste Wiskunde gestudeerd, maar ik vond het altijd al leuk om dingen te maken, vooral als het wat handwerk met elektronica, ontwerpen en programmeren betrof. Dankzij een unieke cursus prototyping, aangeboden op onze afdeling Industrial Design, kreeg ik de kans om iets heel interessants te maken. Het project kan worden behandeld als een Termijnproject, dat een heel semester duurt (4 maanden). Studenten kregen een taak toegewezen om een ​​creatieve benadering te vinden voor het ontwerpen van reeds bestaande producten/demo's en om hun ideeën te realiseren met behulp van Arduino-microcontrollers en sensoren. Ik dacht aan schaken, en na wat onderzoek te hebben gedaan naar succesvolle projecten, merkte ik dat makers in eerdere projecten in principe kant-en-klare schaakengines gebruikten (waarbij alle zetten van elk cijfer in de kern waren geprogrammeerd), samen met Raspberry Pi, sommige MUXes , LED's en reed-schakelaars. In mijn project besloot ik echter om alle externe software in termen van een schaakengine te verwijderen en een creatieve oplossing te vinden voor het figuurherkenningsprobleem, met behulp van RFID-lezer, Hall-effectsensoren en Arduino Mega.

Om het simpel te zeggen, stel dat je een schaakbord hebt met een "brain"=microcontroller, en je moet je bord laten begrijpen welk figuur je in je hand had en waar je het hebt geplaatst. Dit is het probleem van figuurherkenning. De oplossing voor dit probleem is triviaal als je een schaakengine hebt waarbij alle stukken op hun beginpositie op het bord staan. Voordat ik uitleg waarom dat zo is, wil ik eerst een paar opmerkingen maken.

Voor degenen die enthousiast zijn over hoe de dingen hier werken, moet ik een verduidelijking geven over waarom we reed-schakelaars nodig hebben (of in mijn geval gebruikte ik Hall-effectsensoren):als je een magneet onder elk stuk plaatst en het oppakt van een vierkant op het bord (ervan uitgaande dat er onder elk vierkant een reed-schakelaar is) door het al dan niet bestaan ​​van het magnetische veld boven de sensor, kunt u uw controller laten begrijpen of er wel/niet een stuk op het vierkant staat. Het vertelt microcontroller echter nog steeds niets over welk stuk precies op het plein staat. Het vertelt alleen dat er wel/geen stuk op een veld staat. Op dit punt staan ​​we oog in oog met een figuurherkenningsprobleem, dat kan worden opgelost met een schaakengine, waarbij alle stukken op hun oorspronkelijke positie worden geplaatst wanneer het schaakspel begint. Op deze manier "weet" de microcontroller waar elk onderdeel vanaf het begin staat, met alle adressen vast in het geheugen. Dit brengt ons echter een enorme beperking met zich mee:je kunt niet, laten we zeggen, een willekeurig aantal stukken selecteren en ze willekeurig ergens op het bord plaatsen en beginnen met het analyseren van het spel. Je moet altijd vanaf het begin beginnen, alle stukken moeten oorspronkelijk op het bord staan, omdat dit de enige manier is voor de microcontroller om hun locatie te volgen zodra je een stuk hebt opgetild en op een ander veld hebt geplaatst. In wezen was dit het probleem dat ik opmerkte en besloot ik ernaartoe te werken.

Mijn oplossing was vrij eenvoudig, hoewel creatief. Ik plaatste een RFID-lezer aan de voorkant van een bord. Ondertussen heb ik niet alleen een magneet onder stukken bevestigd, maar ook een RFID-tag, waarbij elk stuk een unieke ID heeft. Dus voordat je een figuur op een willekeurig vierkant plaatst, kun je het stuk eerst dicht bij de RFID-lezer houden en het de ID laten lezen, het stuk identificeren, opslaan in het geheugen en dan kun je het plaatsen waar je maar wilt. Ook heb ik, in plaats van reed-schakelaars, om het circuitontwerp te vereenvoudigen, Hall-effectsensoren gebruikt, die op dezelfde manier werken, met het enige verschil dat ik 0 of 1 naar een microcontroller stuur als digitale gegevens, wat betekent "er is" of "er is geen" stuk op het veld, respectievelijk. Ik heb ook LED's toegevoegd (helaas niet van dezelfde kleur, had er geen), zodat wanneer je het stuk optilt, alle vierkante locaties, waar een opgetild stuk zou kunnen worden geplaatst, oplichten. Zie het als een leerzame oefening voor schaakleerders :)

Ten slotte wil ik opmerken dat ondanks het feit dat ik verschillende technieken heb gebruikt, het project eenvoudig en begrijpelijk blijft, niet diep uitgewerkt of te ingewikkeld. Ik had niet genoeg tijd om verder te gaan met het 8x8-schaakbord (ook omdat 64 Hall-effectsensoren duur zijn in Turkije, heb ik alle kosten met betrekking tot het project gedekt), daarom deed ik een 4x4-demoversie met slechts twee geteste stukken:pion en koningin . In plaats van een schaakengine te gebruiken, schreef ik een broncode voor Arduino, die alles genereert.

Voordat we overgaan naar de stap-voor-stap uitleg over hoe het project werd uitgevoerd, raad ik aan om een ​​illustratieve video te bekijken en een intuïtief idee te krijgen van waar ik het over heb.

Opmerking #1:Een van de rode LED's (eerste in de rij/van links naar rechts) is doorgebrand, laat maar.

Opmerking #2:Hoewel veel gebruikt, kan ik uit mijn ervaring zeggen dat de RFID-technologie niet het beste idee is om te gebruiken in doe-het-zelf-toepassingen (natuurlijk als je alternatieven hebt). Voordat alles werkte, heb ik veel proeven gedaan door schaakstukken dicht bij de lezer te plaatsen en te wachten tot deze de ID correct leest. Daarvoor moet een seriële poort worden ingesteld, want de manier waarop de RFID-lezer de ID leest, is gewoon hoofdpijn. Men moet het zelf proberen om het probleem te begrijpen.

Hier is de lijst met alle tools Ik gebruikte voor het project:

Elektronische componenten:

  • Broodplank (x1)
  • Omnidirectionele A1126LUA-T (IC-1126 SW OMNI 3-SIP ALLEGRO) Hall-effectsensoren (x16)
  • Basis 5 mm LED's (x16)
  • Jumperdraden
  • 125 kHz RFID-lezer en antenne (x1)
  • Arduino Mega (x1)
  • RFID 3M-tags (x2)

Andere materialen:

  • Plexiglas
  • Glanzend papier
  • korte planken (hout)
  • Acrylverf (donkergroen en crème) x2
  • Dun karton
  • 10 mm ronde magneten (x2)
  • Pion en Koningin stukken
  • Soldeerbout en soldeermaterialen

Tijd om uit te leggen hoe dingen zijn gemaakt. Volg de stapsgewijze beschrijving:

1. Neem een ​​karton van 21x21 cm en wat extra karton om de wanden van het bovenste deel van het bord te snijden en te lijmen, om 16 vierkanten te maken met A B C D 1 2 3 4 opgeteld. Omdat karton dun is, kun je 16 Hall-effectsensoren in elk vierkant plakken, met elk 3 pootjes en 16 LED's met elk 2 pootjes.

2. Nadat u componenten hebt ingesteld, moet u wat solderen, poten van Hall-effectsensoren en LED's aan jumperdraden solderen. Op dit punt zou ik aanraden om op een slimme manier gekleurde draden te selecteren, zodat je niet in de war raakt met de + en - poten van LED's, ook VCC, GND en PIN-poten van Hall-effectsensoren. Je zou natuurlijk een PCB kunnen printen met sensoren en zelfs WS2812 type LED's die al zijn gesoldeerd, maar ik besloot het project eenvoudig te houden en wat meer "handwerk" te doen. Op dit punt hoeft u alleen maar snoeren en sensoren voor te bereiden. In latere stadia kunt u na het Fritzing-schema zien waar u het uiteinde van elke draad moet bevestigen. Binnenkort gaan sommige rechtstreeks naar de pincodes op de Arduino Mega (er zijn er genoeg op de Arduino), andere naar het breadboard en alle GND's kunnen aan een enkel stuk snoer worden gesoldeerd (waardoor een gemeenschappelijke basis ontstaat) die later moet worden aangesloten op de GND op het Arduino-bord. Een belangrijke opmerking hierbij:Hall-effectsensoren zijn OMNIDIRECTIONEEL, wat betekent dat het niet uitmaakt welke pool van een magneet dicht bij de sensor wordt gehouden, het zal 0 gegevens verzenden terwijl er een magnetisch veld in de buurt is en 1 wanneer dat niet het geval is, namelijk, magneet is weg (verder dan laten we zeggen 5 sm) van de sensor.

3. Bereid gelijkaardig karton van 21x21 cm voor en bevestig de Arduino Mega en een lang breadboard erop. Je kunt ook weer 4 wanden van elke gewenste hoogte uit karton snijden, en deze verticaal verlijmen met die twee lagen vierkante platen van 21x21 cm. Volg dan Fritzing Schematics om dingen op te zetten. U kunt de RFID-lezer ook instellen nadat u klaar bent met LED's en Hall-effectsensoren.

4. Test of alle LED's en sensoren werken, door signalen te sturen met behulp van basiscodes. Vermijd deze stap niet, want dan kunt u testen of alles naar behoren werkt en kunt u doorgaan met de verdere constructie van het bord.

5. Bereid pion en koningin voor, met twee magneten met een straal van 10 cm eronder, en ronde RFID-tags. Later moet je de ID's van die tags uit het Serial Screen op Arduino IDE lezen.

6. Als alles goed werkt, kun je de hoofdcode starten en dingen uitproberen!

7 (optioneel). U kunt wat artistiek werk met hout doen, waardoor uw demo een natuurlijker beeld krijgt. Dat is aan uw wil en verbeelding.

Hier zijn enkele video's en foto's van verschillende stadia:

Dank u voor uw aandacht! Test alles en wees vrij om in de opmerkingen te schrijven over eventuele fouten die ik heb gemist, verbeteringen, suggesties enz. Ik kijk ernaar uit om wat meningen over het project te horen. Als je hulp nodig hebt bij het project, mail me dan (miriyevt@gmail .com) of voeg Skype toe (tahir.miriyev9r1), zodat we een gesprek kunnen plannen en dingen in detail kunnen bespreken. Veel succes!

Code

  • thinK_code.ino
thinK_code.inoArduino
Ik heb geprobeerd zoveel mogelijk opmerkingen achter te laten om het proces van code-analyse begrijpelijk te maken. Om eerlijk te zijn, lijkt de logica op het eerste gezicht misschien een beetje ingewikkeld, maar als je dieper in de logica van de code graaft, zal het er uitgebreider uitzien.

Opmerking:net als bij het echte schaakbord, heb ik vierkanten abstract genummerd als A1, A2, A3, A4, B1, ..., C1, ... ,D1,.., D4. In de code is het echter niet praktisch om deze notatie te gebruiken. Daarom gebruikte ik arrays en stelde ik vierkanten voor als respectievelijk 00, 01, 02, 03,10,11,12,13,..., 32,33.
#include SoftwareSerial RFID(11, 12);//----------------------------------------------- ------------ BEGIN ------------------------------------- -------------------------------------------------- ------int empty_pos[2];int figure_pos[2][2]; // denken aan een figuurpositie als een matrix van twee vectoren (koningin en pion) met drie ingangen (x pos, y pos en waarde 1 (koningin), 2 (pion) in new_id [14] ={0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};int id_type_matrix[4][4] ={{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}};int temp =0;int queen_id[14] ={2, 53, 65, 48, 48, 56, 51, 49, 55, 70, 65, 51, 52, 3};int pawn_id[14] ={2, 53, 65, 48, 48, 56, 51, 56, 67, 49, 56, 52, 68, 3};int temp_vect[2];int count =0;int ID =0;int yeni_id[14]; //initiële matrixmatrix voor hall-effect sensorenint hes_bool_matrix[4][4];// lijst met Hall-effect sensoren pinnen op Arduinoconst int hes_00 =44;const int hes_01 =45;const int hes_02 =46;const int hes_03 =47;const int hes_10 =48;const int hes_11 =49;const int hes_12 =50;const int hes_13 =2;const int hes_20 =3;const int hes_21 =4;const int hes_22 =5;const int hes_23 =6;const int hes_30 =7;const int hes_31 =8;const int hes_32 =9;const int hes_33 =10;int hes_pin_matrix[4][4] ={ {hes_00, he s_01, hes_02, hes_03}, {hes_10, hes_11, hes_12, hes_13}, {hes_20, hes_21, hes_22, hes_23}, {hes_30, hes_31, hes_32, hes_33}};//LED pinsconst int led_00 =_const led_00 ==23;const int led_02 =24;const int led_03 =25;const int led_10 =26;const int led_11 =27;const int led_12 =28;const int led_13 =29;const int led_20 =30;const int led_21 =31;const int led_22 =32;const int led_23 =33;const int led_30 =34;const int led_31 =35;const int led_32 =36;const int led_33 =37;int led_matrix[4][4] ={ {led_00, led_01, led_02, led_03}, {led_10, led_11, led_12, led_13}, {led_20, led_21, led_22, led_23}, {led_30, led_31, led_32, led_33}};//--------- ------------------------------------------- INSTELLINGSGEBIED ----- -------------------------------------------------- -------------------------- ongeldige setup () { RFID.begin (9600); Serieel.begin(9600); // lezen (invoer) modi voor hall-effectsensoren pinMode (hes_01, INPUT); pinMode(hes_02, INPUT); pinMode(hes_03, INPUT); pinMode(hes_00, INPUT); pinMode(hes_10, INPUT); pinMode(hes_11, INPUT); pinMode(hes_12, INPUT); pinMode(hes_13, INPUT); pinMode(hes_20, INPUT); pinMode(hes_21, INPUT); pinMode(hes_22, INPUT); pinMode(hes_23, INPUT); pinMode(hes_30, INPUT); pinMode(hes_31, INPUT); pinMode(hes_32, INPUT); pinMode(hes_33, INPUT); //schrijven (uitvoer) modi voor LED-pinnen pinMode (led_00, OUTPUT); pinMode (led_01, UITGANG); pinMode (led_02, UITGANG); pinMode (led_03, UITGANG); pinMode (led_10, UITGANG); pinMode (led_11, UITGANG); pinMode (led_12, UITGANG); pinMode (led_13, UITGANG); pinMode (led_20, UITGANG); pinMode (led_21, UITGANG); pinMode (led_22, UITGANG); pinMode (led_23, UITGANG); pinMode (led_30, UITGANG); pinMode (led_31, UITGANG); pinMode (led_32, UITGANG); pinMode (led_33, UITGANG); lees_tags(); vertraging (1000); eerste_figuur(); vertraging (1000); Serieel.end(); RFID.end(); vertraging (5000); Serieel.begin(9600); vertraging (1000); RFID.begin(9600); vertraging (1000); lees_tags(); vertraging (5000); //RFID.flush(); // stopt meerdere reads second_figure(); vertraging (1000);// id_type_matrix[0][2] =2;// id_type_matrix[2][1] =1;}//------------------ --------------------------------- FUNCTIEGEBIED--------------- ---------------------------------------------//--- -------------------------------------RFID ID-tracking en figuurherkenning------- ----------------------------------------boolean Compare_ID(int aa[14], int bb[14]){ boolean ff =false; int fg =0; for (int cc =0; cc <14; cc++) { if (aa[cc] ==bb[cc]) { fg++; } } if (fg ==14) { ff =waar; } return ff;}int read_tags(){ Serial.println("Plaats het cijfer dichtbij de RFID-lezer"); vertraging (5000); RFID.flush(); // stopt meerdere leesbewerkingen als (RFID.available ()> 0) { delay (300); voor (int z =0; z <14; z++) { ID =RFID.read(); nieuwe_id[z] =ID; Serial.println(new_id[z], DEC); vertraging (500); } } Serial.println("ID-lezing is voltooid"); ++tel; vertraging (5000); // tijd om de figuur op een bord te plaatsen en de tweede voor een RFID-lezerreturn new_id;}void first_figure() { if (compare_ID(new_id, queen_id) ==true) { Serial.println("QUEEN IS DETECTED" ); for (int s =0; s <=3; s++) { for (int t =0; t <=3; t++) { if (digitalRead(hes_pin_matrix[s][t]) ==0) { id_type_matrix[s ][t] =1; temp_vect[0] =s; temp_vect[1] =t; Serial.print("Koningin is geplaatst op:"); Serieafdruk(ken); Seriële.println(t); digitalWrite(led_matrix[s][t],HIGH); vertraging (1000); digitalWrite(led_matrix[s][t],LOW); } } } } else if (compare_ID(new_id, pawn_id) ==true) { Serial.println ("PAWN IS DETECTED"); for (int s =0; s <=3; s++) { for (int t =0; t <=3; t++) { if (digitalRead(hes_pin_matrix[s][t]) ==0) { id_type_matrix[s ][t] =2; temp_vect[0] =s; temp_vect[1] =t; Serial.print("Pion wordt geplaatst op:"); Serieafdruk(ken); Seriële.println(t); digitalWrite(led_matrix[s][t],HIGH); vertraging (1000); digitalWrite(led_matrix[s][t],LOW); } } } } else { Serial.println("Ongedefinieerd cijfer "); }}void second_figure() { if (compare_ID(new_id, queen_id) ==true) { Serial.println("QUEEN IS DETECTED"); for (int s =0; s <=3; s++) { for (int t =0; t <=3; t++) { if (digitalRead(hes_pin_matrix[s][t]) ==0 &&(s !=temp_vect[0] || t!=temp_vect[1])) { id_type_matrix[s][t] =1; Serial.print("Koningin is geplaatst op:"); Serieafdruk(ken); Seriële.println(t); digitalWrite(led_matrix[s][t],HIGH); vertraging (1000); digitalWrite(led_matrix[s][t],LOW); } } } } else if (compare_ID(new_id, pawn_id) ==true) { Serial.println ("PAWN IS DETECTED"); for (int s =0; s <=3; s++) { for (int t =0; t <=3; t++) { if (digitalRead(hes_pin_matrix[s][t]) ==0 &&(s !=temp_vect[0] || t!=temp_vect[1])) { id_type_matrix[s][t] =2; Serial.print("Pion wordt geplaatst op:"); Serieafdruk(ken); Seriële.println(t); digitalWrite(led_matrix[s][t],HIGH); vertraging (1000); digitalWrite(led_matrix[s][t],LOW); } } } }}//------------------------------------------- ---- CIJFERS VINDEN-------------------------------------------- -----------------------------//extra functie om leds alleen uit te zetten als je het figuurtje terug op het bord plaatst leds_off() { int i, j; for (i =0; i <=3; i++) { for (j =0; j <=3; j++) {digitalWrite(led_matrix[i][j], LOW); } }}//--------------------------------------------- ----BEWEGENDE KONINGIN-------------------------------------------- -------------------------------------------------- --void move_queen() { int i, j; for (i =empty_pos[0]; i <3;) {digitalWrite(led_matrix[++i][empty_pos[1]], HIGH); // licht langs een verticale lijn} for (i =empty_pos[0]; i> 0;) {digitalWrite(led_matrix[--i][empty_pos[1]], HIGH); } for (i =empty_pos[1]; i <3;) { digitalWrite(led_matrix[empty_pos[0]][++i], HIGH); // licht langs een horizontale lijn } for (i =empty_pos [1]; i> 0;) { digitalWrite (led_matrix [empty_pos [0]][--i], HIGH); } i =lege_pos[0]; j =lege_pos[1]; for (i =i - 3, j =j - 3; i <=3, j <=3; i++, j++) { if (i>=0 &&j>=0 &&i !=empty_pos[0]) { Serial.print(i); Serieel.println(j); digitalWrite(led_matrix[i][j], HOOG); } } i =lege_pos[0]; j =lege_pos[1]; for (i =i + 3, j =j - 3; i>=0, j <=3; i--, j++) { if (i>=0 &&i <=3 &&j>=0 &&j <=3 &&ik !=empty_pos[0]) { Serial.print(i); Serieel.println(j); digitalWrite(led_matrix[i][j], HOOG); } } }//-------------------------------------begin met het lezen van het aantal cijfers en het opslaan van posities voor elk van hen --------------------------void figure_reading() {//lees alle posities in een lus om de positie van een pion te detecteren int i, j, gevonden_cijfer =0;start:gevonden_cijfer =0; //lees alle bezette (0) en lege (1) posities op het bord // wijs 0(=leeg vierkant), 1(=bezet vierkant) toe aan een variabele hes_bool_matrix[0][0] =digitalRead(hes_00); hes_bool_matrix[0][1] =digitalRead(hes_01); hes_bool_matrix[0][2] =digitalRead(hes_02); hes_bool_matrix[0][3] =digitalRead(hes_03); hes_bool_matrix[1][0] =digitalRead(hes_10); hes_bool_matrix[1][1] =digitalRead(hes_11); hes_bool_matrix[1][2] =digitalRead(hes_12); hes_bool_matrix[1][3] =digitalRead(hes_13); hes_bool_matrix[2][0] =digitalRead(hes_20); hes_bool_matrix[2][1] =digitalRead(hes_21); hes_bool_matrix[2][2] =digitalRead(hes_22); hes_bool_matrix[2][3] =digitalRead(hes_23); hes_bool_matrix[3][0] =digitalRead(hes_30); hes_bool_matrix[3][1] =digitalRead(hes_31); hes_bool_matrix[3][2] =digitalRead(hes_32); hes_bool_matrix[3][3] =digitalRead(hes_33); for (i =0; i <=3; i++) { for (j =0; j <=3; j++) { if (hes_bool_matrix[i][j] ==0) { found_figure++; if (found_figure ==1) { if (id_type_matrix[i][j] ==0) { id_type_matrix[i][j] =temp; temperatuur =0; } if(id_type_matrix[i][j]==1){ Serial.print("Koningin staat op:"); Serial.print(i); Serieel.println(j); figure_pos[0][0] =ik; figure_pos[0][1] =j; } else if(id_type_matrix[i][j]==2){ Serial.print("Pion staat op:"); Serial.print(i); Serieel.println(j); figure_pos[0][0] =ik; figure_pos[0][1] =j; //if (id_type_matrix[i][j] ==0) {//id_type_matrix[i][j] =temp; //temp =0; }} } } else if (found_figure ==2) { if (id_type_matrix[i][j] ==0) { id_type_matrix[i][j] =temp; temperatuur =0; } if(id_type_matrix[i][j]==1){ Serial.print("Koningin staat op:"); Serial.print(i); Serieel.println(j); figure_pos[1][0] =ik; figure_pos[1][1] =j; //if (id_type_matrix[i][j] ==0) {//id_type_matrix[i][j] =temp; //temp =0; } } else if(id_type_matrix[i][j]==2){Serial.print("Pion staat op:"); Serial.print(i); Serieel.println(j); figure_pos[1][0] =ik; figure_pos[1][1] =j;// if (id_type_matrix[i][j] ==0) {// id_type_matrix[i][j] =temp;// temp =0; } //ga uit; } } } }} out:if (found_figure ==0 || found_figure ==1) { ga naar start; } else if (found_figure ==2) { leds_off(); } //---------------------------------------------- wij kies welk figuur je wilt kiezen --------------------------------------------- -------------------- empty_pos[0] =-1; vertraging (2000); if (digitalRead(hes_pin_matrix[figure_pos[0][0]][figure_pos[0][1]]) ==1) { empty_pos[0] =figure_pos[0][0]; lege_pos[1] =figure_pos[0][1]; temp =id_type_matrix[empty_pos[0]][empty_pos[1]]; id_type_matrix[empty_pos[0]][empty_pos[1]] =0; } else if (digitalRead(hes_pin_matrix[figure_pos[1][0]][figure_pos[1][1]]) ==1) { empty_pos[0] =figure_pos[1][0]; lege_pos[1] =figure_pos[1][1]; temp =id_type_matrix[empty_pos[0]][empty_pos[1]]; id_type_matrix[empty_pos[0]][empty_pos[1]] =0; } //------------------------------------------- BEWEGENDE PION of KONINGIN -------------------------------------------------- -------------------------------------------------- if(temp==1){ if (empty_pos[0] !=-1) { move_queen(); ga beginnen; } } else if(temp==2){if (empty_pos[0]!=-1) { if (empty_pos[0] <2) { digitalWrite(led_matrix[empty_pos[0] + 1][empty_pos[1]] , HOOG); digitalWrite(led_matrix[empty_pos[0] + 2][empty_pos[1]], HIGH); } else if (empty_pos[0] ==2) { digitalWrite(led_matrix[empty_pos[0] + 1][empty_pos[1]], HIGH); } anders; } delay(100);} figure_reading();}//------------------------------------ --------------------------------- lus begint --------------- -------------------------------------------------- -------------------void loop() { figure_reading();}

Schema's

Schema's zijn een beetje ingewikkeld, ik weet het, maar het idee moet duidelijk zijn. Het was de eerste keer dat ik Fritzing gebruikte (een aanrader trouwens), waarschijnlijk konden verbindingen nauwkeuriger worden getekend. Hoe dan ook, ik heb alles in de schema's genoteerd.

Opmerking:ik kon het exacte model van RDIF Reader niet vinden tussen componenten in de database van Fritzing. Het model dat ik gebruikte is 125Khz RFID-module - UART. Op Youtube kun je tutorials vinden over het instellen van deze module met Arduino. 4x4demo_q0nvG3T3nS.fzz

Productieproces

  1. Ode aan het prototype
  2. Elektronische inkt
  3. Raspoulette-prototype
  4. Wat is RFID?
  5. Prototype-injectiematrijzen versus productie-injectiematrijzen
  6. Elektronische huid reageert op pijn
  7. Hoe een PCB-prototypefabricagebedrijf te kiezen?
  8. Belangrijke prototype PCB-definities:deel 2
  9. Wat is prototypen?
  10. Een inleiding tot elektronische pompen
  11. De werking van een elektronisch ontstekingssysteem begrijpen