Სარჩევი:

132 პიქსელიანი საათი: 5 ნაბიჯი (სურათებით)
132 პიქსელიანი საათი: 5 ნაბიჯი (სურათებით)

ვიდეო: 132 პიქსელიანი საათი: 5 ნაბიჯი (სურათებით)

ვიდეო: 132 პიქსელიანი საათი: 5 ნაბიჯი (სურათებით)
ვიდეო: Постучись в мою дверь 132 Серия (Русский Дубляж) 2024, ნოემბერი
Anonim
Image
Image
132 პიქსელიანი საათი
132 პიქსელიანი საათი

მე, როგორც მახსოვს, შეპყრობილი ვიყავი LED- ებით და დროით. ამ პროექტში მე შევქმენი დიდი კედლის საათი, რომელიც აჩვენებს მიმდინარე დროს 132 ნეოპიქსელური LED- ების გამოყენებით, რომლებიც დამონტაჟებულია და ანათებს ნაძვის დაფაზე. ეს არის ჰიბრიდული ანალოგური ციფრული ინდივიდუალური პიქსელი ყოველ საათში, წუთსა და წამში.

ეს იყო ყველაზე დიდი პროექტი, რაც მე განვაგრძე დღემდე, დავიწყე ამაზე ფიქრი 6 თვის წინ და იდეა ნელ -ნელა გაერთიანდა. მე ნამდვილად კმაყოფილი ვარ შედეგით და მოუთმენლად ველი თქვენთან გაზიარებას.

ნაბიჯი 1: მასალებისა და ინსტრუმენტების შეგროვება

მასალებისა და ინსტრუმენტების შეგროვება
მასალებისა და ინსტრუმენტების შეგროვება
მასალებისა და ინსტრუმენტების შეგროვება
მასალებისა და ინსტრუმენტების შეგროვება
მასალებისა და ინსტრუმენტების შეგროვება
მასალებისა და ინსტრუმენტების შეგროვება
მასალებისა და ინსტრუმენტების შეგროვება
მასალებისა და ინსტრუმენტების შეგროვება

კომპონენტები

ეს პროექტი დაფუძნებულია ჩემი ადგილობრივი წვრილმანი მაღაზიის მოყვარულთა დაფაზე. დაფის ზომა 850 მმ სიგანე 500 მმ სიმაღლე და 18 მმ სიღრმე.

ამ პროექტში გამოყენებული LED- ები არის 5050 WS2812b, რომლებიც დამონტაჟებულია წრიულ PCB- ზე, დაახლოებით 9 მმ დიამეტრის, უკანა ნაწილზე დასაკრავი ბალიშებით.

მე ვიყენებ Arduino Pro Mini თავსებადი მიკრო კონტროლერს. ეს არის 5V 16 MHZ ვერსია. მე ავირჩიე ეს, რადგან მას აქვს სუპერ თხელი დიზაინი, პატარა ფეხის ანაბეჭდი და ყველა საჭირო პორტი და დამატებით სათადარიგო მომავალი განახლებებისთვის. ასევე არის 5 ვოლტი, ასე რომ შემიძლია გამოვიყენო ერთი კვების ბლოკი LED- ებისთვის, მიკრო კონტროლერისთვის და RTC– სთვის

დროის შენახვაზე ზრუნავს RTC (რეალური დროის საათი) მოდული, რომელიც აღჭურვილია DS3231 ჩიპით. ეს ჩიპი არის ძალიან ზუსტი, ასე რომ დრო არ უნდა გადაადგილდეს ძალიან.

ასევე გამოიყენება:

მავთული. გამდნარი და ცხელი წებო.

ინსტრუმენტები:

დენის საბურღი და ხის საბურღი (10 მმ და 5 მმ)

გასაყიდი რკინა

ცხელი წებოს იარაღი

მავთულის ნაჭრები

Dremel და plunge როუტერის აქსესუარები

ნაბიჯი 2: მარკირება, ბურღვა და მარშრუტიზაცია

მარკირება, ბურღვა და მარშრუტიზაცია
მარკირება, ბურღვა და მარშრუტიზაცია
მარკირება, ბურღვა და მარშრუტიზაცია
მარკირება, ბურღვა და მარშრუტიზაცია
მარკირება, ბურღვა და მარშრუტიზაცია
მარკირება, ბურღვა და მარშრუტიზაცია

ბურღვა

  • სრუტის პირას გამოყენებით იპოვეთ დაფის ცენტრი საპირისპირო კუთხეებიდან ხაზის დახატვით.
  • მონიშნეთ 3 წრე სტრიქონის და კალმის გამოყენებით. გარე წრე უნდა იყოს დაფის კიდედან დაახლოებით 20 მმ, ხოლო დანარჩენი 2 ხაზი 15 მმ -ით გადადის ბოლო ხაზიდან.
  • მე გამოვიყენე დაბეჭდილი საათის სახე, რათა დამეხმაროს თითოეული წუთის და წამის პოზიციების აღნიშვნა გარე 2 სტრიქონზე და საათის შიდა ხაზზე.
  • გაბურღეთ 10 მმ ხვრელები დაახლოებით 5 მმ სიღრმეზე ყოველ საათში, წუთსა და წამში.
  • გამოიყენეთ 5 მმ საბურღი, რათა გააკეთოთ ხვრელები დაფაზე საათში, წუთსა და წამში.

მარშრუტიზაცია

მიუხედავად იმისა, რომ ეს ნაბიჯი არ არის აუცილებელი, ის საშუალებას მისცემს საათის დამონტაჟებას კედელზე.

  • როუტერის და წრის სახელმძღვანელო მარშრუტის მავთულის არხების გამოყენება დაფაზე
  • მონიშნეთ და გაგზავნეთ არდადეგები RTC და მიკრო კონტროლერების საცხოვრებლად.
  • გაატარეთ არხი გარე ხაზებიდან ჩაღრმავებამდე მავთულისთვის

ნაბიჯი 3: ამდენი ჯარისკაცობა, ჭრა და გაშიშვლება

ამდენი ჯარისკაცი, ჭრა და გაშიშვლება
ამდენი ჯარისკაცი, ჭრა და გაშიშვლება
ამდენი ჯარისკაცი, ჭრა და გაშიშვლება
ამდენი ჯარისკაცი, ჭრა და გაშიშვლება
ამდენი ჯარისკაცი, ჭრა და გაშიშვლება
ამდენი ჯარისკაცი, ჭრა და გაშიშვლება

შემდეგი ნაწილის თქმა ბევრად უფრო ადვილია, ვიდრე გაკეთება. ჩემი რჩევა იქნება ჩქარობა. შეეცადეთ იპოვოთ სისტემა და შეხვიდეთ რიტმში.

თითოეულ LED- ს სჭირდება 5 ვოლტი, 5 ვოლტი, მონაცემები შემოსული, მონაცემები გარეთ, გრუნტი და გრუნტი გარეთ. ჩათვლით მიკრო კონტროლერის სიმძლავრე და RTC მისი 400 -ზე მეტი მავთული, ყველა გაშიშვლებული და შედუღებული ორივე ბოლოში.

წებოვანი ცისფერი ნივთიერება ძალიან სასარგებლოა ამ ნაბიჯისათვის.

  • მე დავიწყე ერთმანეთის გვერდით 2 LED- ის განთავსება მათ ხვრელებში, რათა შემუშავებულიყო ერთმანეთთან დასაკავშირებლად საჭირო მავთულის სიგრძე.
  • მავთულის პირველი ნაწილის გამოყენებით, მე გავჭრა 60 თითოეული ფერის მავთული.
  • თითოეული მავთულის ბოლოებიდან ამოიღეთ ყდის 2 მმ და მოათავსეთ ისინი შესაკრავით.
  • Solder პატარა blob of solder თითოეულ LED ბალიშები.
  • შეაერთეთ მავთულები LED- ებზე და შექმენით ორი ჯაჭვი 60 წუთი და წამი და ერთი ჯაჭვი 12 საათისთვის. მე გამოვიყენე წითელი მავთული 5V, ყვითელი მონაცემებისთვის და ლურჯი ადგილზე.
  • იზრუნეთ დააკავშიროთ თითოეული Data Out (DOUT) მომდევნო LED- ის Data In (DIN) - თან
  • ბოლო led თითოეულ ჯაჭვურ დოზას არ სჭირდება მონაცემები მავთულისგან.

მას შემდეგ, რაც ყველა ჯაჭვი დასრულდება, კარგი იდეაა შეამოწმოთ ისინი ინსტალაციამდე. მე გამოვიყენე ჩემი Arduino UNO და Adafruit NeoPixel Strand ტესტი იმის დასადასტურებლად, რომ თითოეული LED მუშაობს.

შეაერთეთ გრძელი მავთულები თითოეულ ჯაჭვზე 5V, Ground და Data in.

ამ ეტაპზე უნდა იყოს ხუთი 5 ვ მავთული, სამი მონაცემთა მავთული დაკავშირებული Arduino Pro Mini და 5 გრუნტის მავთულით.

ამოიღეთ 5 მმ მავთულის ბოლოებიდან 5 მმ და შეაერთეთ ისინი ყველა ერთად და გაიმეორეთ გრუნტის მავთულისთვის.

სამი ჯაჭვის დასრულების შემდეგ შეაერთეთ 5V მავთული Arduino Pro Mini– ს RAW პინზე და ასევე RTC– ის VCC პინზე. სახმელეთო მავთული GND– ზე Arduino Pro Mini და RTC– ზე და შემდეგ კიდევ 2 მავთული:

SCL RTC– დან A5– მდე Pro Mini– ზე

SDA RTC– დან A4– მდე Pro Mini– ზე

LED- ების მონაცემთა ხაზები უნდა დაუკავშირდეს:

  • წამი - ციფრული პინი 3.
  • წუთი - ციფრული პინი 4
  • საათი - ციფრული პინი 5

ნაბიჯი 4: ინსტალაცია

ინსტალაცია
ინსტალაცია
ინსტალაცია
ინსტალაცია
ინსტალაცია
ინსტალაცია

ერთხელ soldered, დაყენების LED- ები მათი ხვრელები უნდა იყოს პირდაპირ წინ. LED- ები უნდა იყოს დაინსტალირებული ისე, რომ მონაცემები მოძრაობდეს საათის ისრის საწინააღმდეგოდ, როდესაც მას უკნიდან ვუყურებთ, რადგან კოდი წინაა.

მე გამოვიყენე ცხელი წებოს მცირე რაოდენობა მათ დასაკავებლად, რადგან მსურს შევძლო შეცვალო ერთი LED, თუ ის მომავალში ვერ ხერხდება.

მე ასევე გამოვიყენე ცხელი წებო, რომ ყველა მავთული სუფთა და მოწესრიგებული ყოფილიყო და ლულის კონექტორი გამეკეთებინა დაფაზე.

არსებობს arduino pro მინი პროგრამირების სახელმძღვანელო. მე ვიყენებ გარე USB სერიული გადამყვანის მეთოდს, რომ ჩავტვირთო ეს კოდი Arduino– ზე:

ეს კოდი ასევე განსაზღვრავს RTC– ს დროს შედგენის დროზე. ასე რომ, მნიშვნელოვანია უბრალოდ ატვირთოთ ატვირთვის ღილაკი, რათა ის შეესაბამებოდეს და ატვირთოს რაც შეიძლება სწრაფად.

ამ კოდის დიდი ნაწილი ნასესხებია NeoPixel ბეჭდის საათიდან ენდი დოროს მიერ. ზოგი Adafruit NeoPixel Strand Test– დან და ზოგი მე ერთად.

თქვენ დაგჭირდებათ რამდენიმე ბიბლიოთეკის დაყენება. ისინი ხელმისაწვდომია ბიბლიოთეკების მენეჯერისგან Arduino პროგრამულ უზრუნველყოფაზე.

Adafruit NeoPixel ws2812b LED- ებისთვის

მავთული RTC– სთან საუბრისთვის I2C– ით (ეს ჩაშენებულია სტანდარტულად)

და RTClib რომ იცოდეს რა სთხოვოს RTC

/********************************************** **************************NeoPixel ბეჭდის საათი ენდი დოროს მიერ ([email protected]) https://andydoro.com/ringclock/ *********************************************** *************************

გადასინჯვის ისტორია

თარიღი რა

20140320 AFD პირველი მონახაზი 20160105 AFD გაცვეთილი რკალი 20160916 AFD Trinket თავსებადი 20170727 AFD დაამატა STARTPIXEL 3D დანართისთვის, ცვლადი საწყისი წერტილი, დაემატა ავტომატური DST მხარდაჭერა 20180424 AFD DST ბიბლიოთეკის გამოყენებით https://github.com/andydoro/DST_RTC *

/ შეიტანეთ ბიბლიოთეკის კოდი:

#ჩართეთ #ჩართეთ

#ჩართეთ

// ქინძისთავების განსაზღვრა

#განსაზღვრა SECPIN 3 #განსაზღვრეთ MINPIN 4 #განსაზღვრეთ HOUPIN 5

#განსაზღვრეთ სიკაშკაშე 20 // დააყენეთ მაქსიმალური სიკაშკაშე

#განსაზღვრეთ r 10

#განსაზღვრეთ g 10 #განსაზღვრეთ b 10 RTC_DS3231 rtc; // საათის ობიექტის დადგენა

Adafruit_NeoPixel ზოლებიS = Adafruit_NeoPixel (60, SECPIN, NEO_GRB + NEO_KHZ800); // ზოლის ობიექტი

Adafruit_NeoPixel ზოლები M = Adafruit_NeoPixel (60, MINPIN, NEO_GRB + NEO_KHZ800); // ზოლის ობიექტი Adafruit_NeoPixel stripH = Adafruit_NeoPixel (24, HOUPIN, NEO_GRB + NEO_KHZ800); // strip object byte pixelColorRed, pixelColorGreen, pixelColorBlue; // ფლობს ფერის მნიშვნელობებს

void setup () {

Wire.begin (); // დასაწყისი I2C rtc.begin (); // საათის დაწყება

სერიული.დაწყება (9600);

// დააყენეთ pinmode pinmode (SECPIN, OUTPUT); pinMode (MINPIN, OUTPUT); pinMode (HOUPIN, OUTPUT);

თუ (rtc.lostPower ()) {

Serial.println ("RTC დაკარგა ენერგია, მოდით დავადგინოთ დრო!"); // მომდევნო ხაზი ადგენს RTC თარიღსა და დროს, როდესაც ესკიზი შედგენილია rtc.adjust (DateTime (F (_ DATE_), F (_ TIME_))); // ეს ხაზი ადგენს RTC– ს მკაფიო თარიღსა და დროს, მაგალითად, მითითებულია // 2014 წლის 21 იანვარს დილის 3 საათზე დარეკავთ: // rtc.adjust (DateTime (2014, 1, 21, 3, 0, 0)); }

stripS.begin ();

stripM.begin (); stripH. დაიწყოს (); //strip.show (); // ყველა პიქსელის ინიციალიზაცია "გამორთვის"

// გაშვების თანმიმდევრობა

დაგვიანება (500);

colorWipeS (ზოლები S. ფერი (0, გ, 0), 5); // ლურჯი ფერიWipeM (stripM. Color (r, 0, 0), 5); // ლურჯი ფერიWipeH (ზოლები. ფერი (0, 0, ბ), 50); // ცისფერი

დაგვიანება (1000);

DateTime theTime = rtc.now (); // ითვალისწინებს DST ბაიტს secondval = theTime.second (); // მიიღეთ წამი ბაიტი minuteval = theTime.minute (); // მიიღეთ წუთი int hourval = theTime.hour (); საათობრივი = საათის შუალედი % 12; // ეს საათი არის 12 საათი, თუ 13-23, გადააკეთეთ 0-11`

for (uint16_t i = 0; i <secondval; i ++) {stripS.setPixelColor (i, 0, 0, b); stripS.show (); დაგვიანება (5); }

for (uint16_t i = 0; i <minuteval; i ++) {stripM.setPixelColor (i, 0, g, 0); stripM.show (); დაგვიანება (5); }

for (uint16_t i = 0; i <hourval; i ++) {stripH.setPixelColor (i, r, 0, 0); stripH.show (); დაგვიანება (5); }

}

ბათილი მარყუჟი () {

// მიიღეთ დრო

DateTime theTime = rtc.now (); // ითვალისწინებს DST

მეორე ბაიტი = theTime.second (); // მიიღეთ წამი

ბაიტი minuteval = theTime.minute (); // მიიღეთ წუთი int hourval = theTime.hour (); // მიიღეთ საათი hourval = hourval % 12; // ეს საათი არის 12 საათი, თუ 13-23, გადააკეთეთ 0-11`

stripS.setPixelColor (მეორე ხარისხის, 0, 0, 20); stripS.show (); დაგვიანება (10); if (secondval == 59) {for (uint8_t i = stripS.numPixels (); i> 0; i--) {stripS.setPixelColor (i, 0, g, 0); stripS.show (); დაგვიანებით (16);}}

stripM.setPixelColor (წუთიანი წუთი, 0, გ, 0);

stripM.show (); დაგვიანება (10); if (secondval == 59 && minuteval == 59) {for (uint8_t i = stripM.numPixels (); i> 0; i--) {stripM.setPixelColor (i, r, 0, 0); stripM.show (); დაგვიანებით (16);}}

stripH.setPixelColor (საათი, r, 0, 0);

stripH.show (); დაგვიანება (10); if (secondval == 59 && minuteval == 59 && hourval == 11) {for (uint8_t i = stripH.numPixels (); i> 0; i--) {stripH.setPixelColor (i, 0, 0, b); stripH.show (); შეფერხება (83);}} // სერიული გამართვისთვის Serial.print (hourval, DEC); Serial.print (':'); Serial.print (წუთი, DEC); Serial.print (':'); Serial.println (მეორე ხარისხი, DEC); }

// შეავსეთ წერტილები ერთმანეთის მიყოლებით ფერით

void colorWipeS (uint32_t c, uint8_t ლოდინი) {for (uint16_t i = 0; i <stripS.numPixels (); i ++) {stripS.setPixelColor (i, c); stripS.show (); დაგვიანება (ლოდინი); }}

ბათილი ფერიWipeM (uint32_t c, uint8_t ლოდინი) {

for (uint16_t i = 0; i <stripM.numPixels (); i ++) {stripM.setPixelColor (i, c); stripM.show (); დაგვიანება (ლოდინი); }}

ბათილი ფერიWipeH (uint32_t c, uint8_t ლოდინი) {

for (uint16_t i = 0; i <stripH.numPixels (); i ++) {stripH.setPixelColor (i, c); stripH.show (); დაგვიანება (ლოდინი); }}

ნაბიჯი 5: საბოლოო შეხება

Image
Image
საბოლოო შეხებები
საბოლოო შეხებები

ყველაფერი, რაც ახლა უნდა დარჩეს, არის RTC და მიკრო კონტროლერის დაფიქსირება შესვენების დროს.

მე დავამონტაჟე RTC ბატარეა ზემოთ, ასე რომ საჭიროების შემთხვევაში შემიძლია მარტივად შევცვალო ბატარეა.

შეაერთეთ 5 ვ მავთული კონექტორის + მხარეს და გრუნტი - მხარეს

გაააქტიურეთ!

მე მყავს დაკავშირებული USB ბატარეის ბანკთან, მაგრამ USB ტელეფონის დამტენი ასევე იმუშავებს.

Შენიშვნა:

LED- ების სიკაშკაშე დადგენილია კოდში. იგი დაყენებულია დაბალ დონეზე, რათა მიმდინარე გათამაშება დაბალი იყოს. სრული სიკაშკაშის მქონე ყველა LED- ების განათებით მას შეუძლია თითქმის 8 ამპერი ამუშაოს. ახლანდელი კონფიგურაციით 1 -ზე ნაკლებია.

საათების კონკურსი
საათების კონკურსი
საათების კონკურსი
საათების კონკურსი

მეორე ადგილი საათების კონკურსში

გირჩევთ: