Სარჩევი:
ვიდეო: IR- დისტანციური ფერის გამოცნობის თამაში: 3 ნაბიჯი
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:19
ამ სასწავლო ინსტრუქციაში მე გაჩვენებთ თუ როგორ გააკონტროლოთ RGB led IR- დისტანციური მართვის საშუალებით და გააკეთეთ სახალისო თამაში მისგან!
ნაბიჯი 1: საჭირო ნაწილები
ამ პროექტისთვის დაგჭირდებათ ნაწილები:
- arduino one- RGB Led- IR- სენსორი
(led რაოდენობა დამოკიდებულია თამაშზე, სიცოცხლის რაოდენობაზე)- 2 მწვანე leds- 1 ყვითელი led- 1 ნარინჯისფერი led- 3 წითელი led
ნაბიჯი 2: კოდი
#ჩართეთ
int redPin = 10;
int greenPin = 6; int bluePin = 5;
int levensPin1 = 8;
int levensPin2 = 9; int levensPin3 = 12;
int დონეPin1 = 2;
int დონეPin2 = 3; int დონეPin3 = 4; int დონეPin4 = 7;
int RECV_PIN = 11;
IRrecv irrecv (RECV_PIN); decode_results results;
// შეყვანის ფერები
int შეყვანა = {-1, -1, -1}; int ფერი = {-1, -1, -1};
int indexNumber = 0;
int indexColor = 0;
int waarde = 0;
int rood = 0;
int groen = 0; int blauw = 0;
// ფერების გენერირება
int roodRandom = 0; int groenRandom = 0; int blauwRandom = 0;
// თამაშის ცვლადები
int diff = 200;
int დონეNumber = 1;
int დონე = {-1, -1, -1, -1};
int t = 0;
int დონე 1 = 255;
int დონე 2 = 0; int დონე 3 = 0; int დონე 4 = 0;
int სიცოცხლე = 3;
int levens1 = 255; int levens2 = 255; int levens3 = 255;
int roodGok = 0;
int groenGok = 0; int blauwGok = 0;
void setup () {
სერიული.დაწყება (9600); irrecv.enableIRIn (); // დაიწყეთ მიმღების pinMode (redPin, OUTPUT); pinMode (greenPin, OUTPUT); pinMode (bluePin, OUTPUT);
pinMode (levensPin1, OUTPUT);
pinMode (levensPin2, OUTPUT); pinMode (levensPin3, OUTPUT);
}
ბათილი მარყუჟი () {
თუ (irrecv.decode (& results)) // მიიღეთ სიგნალები დისტანციური {Serial.println (results.value, DEC); // თითოეული დაჭერილი ღილაკიდან მიღებული სიგნალების ჩვენება irrecv.resume (); // მიიღეთ მომდევნო სიგნალის გადამრთველი (results.value) {// გადააქციეთ სიგნალები ღილაკებზე არსებულ რიცხვებად და მიანიჭეთ მოქმედება ღილაკებს
საქმე 109562864:
addWaarde (1); შესვენება;
საქმე 109562824:
addWaarde (2); შესვენება;
საქმე 109562856:
addWaarde (3); შესვენება;
საქმე 109562872:
addWaarde (4); შესვენება;
საქმე 109562820:
addWaarde (5); შესვენება;
საქმე 109562852:
addWaarde (6); შესვენება;
საქმე 109562868:
addWaarde (7); შესვენება;
საქმე 109562828:
addWaarde (8); შესვენება;
საქმე 109562860:
addWaarde (9); შესვენება;
საქმე 109562876:
addWaarde (0); შესვენება;
საქმე 109562818: // oud ding enter/R CLK
handleInput (); შესვენება;
საქმე 109562816: // უდის დინგის ძალა
handleColor (); შესვენება; საქმე 109562878: // oud ding cancel/L CLK resetColor (); შესვენება;
საქმე 109562866: // lege knop midden
randomColor (); შესვენება;
საქმე 109562830: // pijltje naar rechts
ჩვენების ჩვენება ყველაფერი (); შესვენება; საქმე 109562838: // esc case 109562822: // AV წყარო resetEverything (); შესვენება; }
// დისტანციური მართვის ღილაკების დანიშვნა ფერის გასაკონტროლებლად: ამ გზით მოთამაშეებს შეუძლიათ დაინახონ როგორ გამოიყურება ფერები და როგორ აერთიანებს მათ, // თამაშის დაწყებამდე. გადართვა (results.value) {case 109562840: rood = 255; შესვენება;
საქმე 109562844:
groen = 255; შესვენება;
საქმე 109562850:
blauw = 255; შესვენება;
საქმე 109562836:
როდ = 0; groen = 0; blauw = 0; შესვენება; }
}
analogWrite (redPin, abs (255 - rood)); // RGB კონტროლის კონტროლი: საპირისპიროდ, რადგან ნაღმი საპირისპიროა.
analogWrite (greenPin, abs (255 - groen)); analogWrite (bluePin, abs (255 - blauw));
// ცოცხალი ლიდერების კონტროლი
თუ (ცხოვრობს == 2) {levens1 = 0; } if (ცოცხლობს == 1) {levens2 = 0; } if (ცხოვრობს == 0) {levens3 = 0; } analogWrite (levensPin1, levens1); analogWrite (levensPin2, levens2); analogWrite (levensPin3, levens3);
// დონის led- ების კონტროლი
if (levelNumber == 1) {level1 = 255; } if (levelNumber == 2) {level1 = 255; დონე 2 = 255; } if (levelNumber == 3) {level1 = 255; დონე 2 = 255; დონე 3 = 255; } if (levelNumber == 4) {level1 = 255; დონე 2 = 255; დონე 3 = 255; დონე 4 = 255; } analogWrite (levelPin1, level1); analogWrite (დონეPin2, დონე 2); analogWrite (დონეPin3, დონე 3); analogWrite (დონეPin4, დონე 4);
}
void addWaarde (int მნიშვნელობა) {// დაამატეთ დაპრესილი მნიშვნელობა სიაში
if (indexNumber == 3) {
დაბრუნების; }
if (შეყვანა [indexNumber] == -1) {
შეყვანა [indexNumber] = მნიშვნელობა; ინდექსი ნომერი ++; }}
void handleInput () {// გააკეთეთ 'waarde' (მნიშვნელობა) სიიდან
waarde = abs (შეყვანა [0] * 100 + შეყვანა [1] * 10 + შეყვანა [2]); შეყვანა [0] = -1; // აღადგინეთ სიგნალის შეყვანა [1] = -1; შეყვანა [2] = -1;
ინდექსი ნომერი = 0;
Serial.print ("waarde opgeslagen:"); Serial.println (waarde); addColor (ვარდი); }
void addColor (int waarde) {// დაამატეთ 3 ციფრიანი 'waarde' სიას
თუ (indexColor == 3) {
დაბრუნების; }
თუ (ფერი [indexColor] == -1) {
ფერი [indexColor] = უორდე; if (ფერი [indexColor]> 255) {ფერი [indexColor] = 255; } indexColor ++; }
}
void randomColor () {// გახადეთ შუქი შემთხვევითი ფერი და შეინახეთ იგი ცვლადებში
roodRandom = შემთხვევითი (0, 255);
groenRandom = შემთხვევითი (0, 255);
blauwRandom = შემთხვევითი (0, 255);
rood = rood შემთხვევითი;
groen = groenRandom; blauw = blauwRandom; Serial.print ("roodRandom ="); Serial.println (შემთხვევითი); Serial.print ("groenRandom ="); Serial.println (groenRandom); Serial.print ("blauwRandom ="); Serial.println (blauwRandom);
}
void handleColor () {// გადააქციე 'waarde' სიიდან 'Gok' (გამოიცანი) ცვლადებად
roodGok = ფერი [0]; groenGok = ფერი [1]; blauwGok = ფერი [2]; // შეამოწმეთ თუ არა Gok ცვლადები ძალიან განსხვავდება რეალური შემთხვევითი ფერისგან: თუ ასეა, აჩვენეთ ვარაუდი სამი წამის განმავლობაში, მწვანე მოციმციმე და კვლავ შეცვალეთ ფერი, დაამატეთ დონე abd და ნებადართული სხვაობა უფრო მცირე გახადეთ // თუ არა, აჩვენეთ გამოიცანი სამი წამი, დახუჭე წითელი და გამოაკელი სიცოცხლეს // თუ სიცოცხლე არ გაქვს, თამაში კვლავ იწყება თუ (აბს ((rood + groen + blauw) - (roodGok + groenGok + blauwGok)) <= განსხვავ) { analogWrite (redPin, abs (255 - roodGok)); analogWrite (greenPin, abs (255 - groenGok)); analogWrite (bluePin, abs (255 - blauwGok)); დაგვიანება (3000); analogWrite (redPin, 255); analogWrite (greenPin, 0); analogWrite (bluePin, 255); დაგვიანება (300); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); დაგვიანება (300); analogWrite (redPin, 255); analogWrite (greenPin, 0); analogWrite (bluePin, 255); დაგვიანება (300); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); დაგვიანება (300);
Serial.print ("roodGok =");
Serial.println (roodGok); Serial.print ("groenGok ="); Serial.println (groenGok); Serial.print ("blauwGok ="); Serial.println (blauwGok); resetColor (); randomColor (); დონე ნომერი ++; განსხვავება -= 50; } else {analogWrite (redPin, abs (255 - roodGok)); analogWrite (greenPin, abs (255 - groenGok)); analogWrite (bluePin, abs (255 - blauwGok)); დაგვიანება (3000); analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); დაგვიანება (300); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); დაგვიანება (300); analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); დაგვიანება (300); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); დაგვიანება (300); Serial.print ("roodGok ="); Serial.println (roodGok); Serial.print ("groenGok ="); Serial.println (groenGok); Serial.print ("blauwGok ="); Serial.println (blauwGok);
resetColor ();
ცხოვრობს--; } if (ცოცხლობს == 0) {analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); დაგვიანება (100); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); დაგვიანება (100); analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); დაგვიანება (100); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); დაგვიანება (100); analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); დაგვიანება (100); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); დაგვიანება (100); გადატვირთვა ყველაფერი (); }
}
void resetColor () {// გამოიყენეთ მნიშვნელობების გადატვირთვისთვის, არასწორი დაჭერისთვის ან ყოველი ახალი გამოცნობისთვის (მხოლოდ დარწმუნებისთვის)
ფერი [0] = -1; ფერი [1] = -1; ფერი [2] = -1;
ინდექსი ნომერი = 0;
indexColor = 0; }
void resetEverything () {// გადატვირთეთ თამაში
ფერი [0] = -1; ფერი [1] = -1; ფერი [2] = -1;
ინდექსი ნომერი = 0;
indexColor = 0;
ცხოვრობს = 3;
როდ = 0; groen = 0; blauw = 0;
roodRandom = 0;
groenRandom = 0; blauwRandom = 0;
levens1 = 255;
levens2 = 255; levens3 = 255;
დონე 1 = 255;
დონე 2 = 0; დონე 3 = 0; დონე 4 = 0;
დონეNumber = 1;
t = 0;
}
void displayEverything () {// გამოიყენეთ ეს სერიული მონიტორის მნიშვნელოვანი ინფორმაციის საჩვენებლად
Serial.print ("roodGok ="); Serial.println (roodGok); Serial.print ("groenGok ="); Serial.println (groenGok); Serial.print ("blauwGok ="); Serial.println (blauwGok); Serial.print ("roodRandom ="); Serial.println (შემთხვევითი); Serial.print ("groenRandom ="); Serial.println (groenRandom); Serial.print ("blauwRandom ="); Serial.println (blauwRandom);
Serial.print ("rood =");
სერიული. ბეჭდვა (როდ); Serial.print ("groen ="); სერიული.პრინტლნი (გროენი); Serial.print ("blauw ="); Serial.println (blauw);
Serial.print ("waarde opgeslagen:");
Serial.println (ვაარდე); }
ნაბიჯი 3: აშენება
თქვენ აშკარად გსურთ ლამაზი მშენებლობა ამ პროექტისთვის. ეს ნაწილი საკმაოდ ღიაა ინტერპრეტაციისთვის, მაგრამ არსებობს რამდენიმე რამ, რაც უნდა გახსოვდეთ: - შეინახეთ წინა პანელი თხელი, ასე რომ თქვენ კვლავ შეგიძლიათ შეინარჩუნოთ თქვენი leds მასში და IR მიმღები მაინც მუშაობს
- შეინახეთ საკმარისი ადგილი შენობაში არდუინოსა და დასაკრავი დაფისთვის
- დარწმუნდით, რომ უკანა ნაწილში არის არდუინოს სიმძლავრე
მე დავამატე გაყვანილობის უხეში სქემა.
Წარმატებები და გაერთე!
გირჩევთ:
ოქტარინი: ფერის შესატყვისი თამაში WS2812 RGB LED- ებით: 6 ნაბიჯი
ოქტარინი: ფერის შესატყვისი თამაში WS2812 RGB LED- ებით: ოქტარინი, მაგიის ფერი. ის ცოცხალი და კაშკაშა იყო და წარმოსახვის უდავო პიგმენტი იყო, რადგან სადაც არ უნდა გამოჩენილიყო ეს იყო ნიშანი იმისა, რომ უბრალო მატერია ჯადოსნური გონების ძალების მსახური იყო. ეს იყო მოჯადოებული
მარტივი გამოცნობის თამაში - Python + XBees + Arduino: 10 ნაბიჯი
მარტივი გამოცნობის თამაში - Python + XBees + Arduino: აი, როგორ მუშაობს თამაში: თქვენ გაქვთ 4 მცდელობა გამოიცნოთ ასო ‘a’ - ‘h’ - > გამოიცანით სწორი ასო: თქვენ გაიმარჯვებთ! ?-> გამოიცანი არასწორი ასო: თამაში დასრულდა?-> გამოიცანით ნებისმიერი სხვა პერსონაჟი „ა“- „თ“-ს გარეთ: თამაში დასრულდა? თქვენი არდუინო მოგცემთ საშუალებას
მარტივი პითონის რიცხვის გამოცნობის თამაში: 11 ნაბიჯი
მარტივი პითონის რიცხვის გამოცნობის თამაში: ამ გაკვეთილში ჩვენ შევასწავლით თუ როგორ უნდა შევქმნათ პითონის რიცხვების გამოცნობის მარტივი თამაში Pycharm პროგრამაში. პითონი არის სკრიპტირების ენა, რომელიც შესანიშნავია როგორც დამწყებთათვის, ასევე ექსპერტებისთვის. კოდირების სტილი პითონში არის ადვილად წასაკითხი და დაკავებული
პითონის გამოცნობის თამაში: 9 ნაბიჯი
პითონის გამოცნობის თამაში: ქვემოთ მოცემულ ინსტრუქციებში მოცემულია ეტაპობრივად მითითებები, თუ როგორ უნდა დაწეროთ პროგრამა შემთხვევითი მოდულის გამოყენებით და შექმნათ გამოცნობის თამაში, რომელიც ურთიერთობს მომხმარებელთან. დასაწყებად დაგჭირდებათ თქვენს კომპიუტერში პითონის დაყენება და ასევე ოპერირება
რა არის ცოტა ფიქრი? გააკეთეთ მარტივი გამოცნობის თამაში BBC მიკრობიტით!: 10 ნაბიჯი
რა არის ცოტა ფიქრი? გააკეთე მარტივი გამოცნობის თამაში BBC მიკრობიტით!: მე ავიღე BBC– ს რამდენიმე მიკრობიტი მას შემდეგ რაც წავიკითხე მათზე დადებითი მიმოხილვები რამოდენიმე ონლაინ სტატიაში. BIT– ის გაცნობის მცდელობაში მე ვითამაშე ონლაინ Microsoft– ის ბლოკების რედაქტორთან ერთად რამოდენიმე საათი და მოვიდა