Სარჩევი:

ფერადი სივრცის შესწავლა: 6 ნაბიჯი
ფერადი სივრცის შესწავლა: 6 ნაბიჯი

ვიდეო: ფერადი სივრცის შესწავლა: 6 ნაბიჯი

ვიდეო: ფერადი სივრცის შესწავლა: 6 ნაბიჯი
ვიდეო: ძმამ დას iphone 6 უყიდა 2024, ნოემბერი
Anonim
ფერადი სივრცის შესწავლა
ფერადი სივრცის შესწავლა

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

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

ეს პროექტი დაგეხმარებათ აღმოაჩინოთ წითელი, მწვანე და ლურჯი (RGB) ფერის სივრცე Arduino– ს, RGB LED– ს და მცირე მათემატიკის გამოყენებით.

თქვენ შეგიძლიათ იფიქროთ სამი ფერის, წითელი, მწვანე და ლურჯის ინტენსივობაზე, როგორც კოორდინატები კუბში, სადაც თითოეული ფერი ერთი ღერძის გასწვრივ მდებარეობს და სამივე ღერძი ერთმანეთის პერპენდიკულარულია. რაც უფრო ახლოს ხართ ღერძის ნულოვან წერტილთან, ან წარმოშობასთან, მით ნაკლებია ეს ფერი. როდესაც სამივე ფერის მნიშვნელობა ნულოვან წერტილშია, ან წარმოშობისაა, მაშინ ფერი შავია და RGB LED მთლიანად გამორთულია. როდესაც სამივე ფერის მნიშვნელობა მაქსიმალურად მაღალია (ჩვენს შემთხვევაში 255 სამივე ფერისთვის), RGB LED მთლიანად ჩართულია და თვალი ამ ფერის კომბინაციას აღიქვამს როგორც თეთრს.

ნაბიჯი 1: RGB ფერის სივრცე

RGB ფერის სივრცე
RGB ფერის სივრცე

მადლობა კენეტ მორელანდს მისი ლამაზი იმიჯის გამოყენების ნებართვისთვის.

ჩვენ გვსურს 3D ფერის სივრცის კუბის კუთხეების შესწავლა Arduino– სთან დაკავშირებული RGB LED გამოყენებით, მაგრამ ასევე გვინდა ამის გაკეთება საინტერესო გზით. ჩვენ ამის გაკეთება შეგვიძლია სამი მარყუჟის ჩასმით (თითოეული წითელი, მწვანე და ლურჯი) და ყველა შესაძლო ფერის კომბინაციის გავლით, მაგრამ ეს მართლაც მოსაწყენი იქნება. გინახავთ ოდესმე 2D Lissajous ნიმუში ოსცილოსკოპზე ან ლაზერული ჩვენება? პარამეტრებიდან გამომდინარე, Lissajous ნიმუში შეიძლება ჰგავდეს დიაგონალურ ხაზს, წრეს, ფიგურას 8-ს, ან ნელა მბრუნავ წერტილოვან პეპლის მსგავს ნიმუშს. Lissajous ნიმუშები იქმნება ორი (ან მეტი) ოსცილატორის სინუსოიდური სიგნალების თვალყურის დევნებით x-y (ან, ჩვენი შემთხვევისთვის, x-y-z ან R-G-B) ღერძებზე.

ნაბიჯი 2: კარგი გემი Lissajous

ონლაინ თამაში კარგი გემი Lissajous
ონლაინ თამაში კარგი გემი Lissajous

ყველაზე საინტერესო Lissajous ნიმუშები ჩნდება მაშინ, როდესაც სინუსოიდური სიგნალების სიხშირე განსხვავდება მცირე რაოდენობით. აქ არსებული ოსცილოსკოპის ფოტოში სიხშირეები განსხვავდება 5 -დან 2 -მდე თანაფარდობით (ორივე პირველადი რიცხვია). ეს ნიმუში კარგად ფარავს მის კვადრატს და მშვენივრად ხვდება კუთხეებში. უმაღლესი პირველადი რიცხვები კიდევ უფრო უკეთეს საქმეს გააკეთებს კვადრატის დაფარვისა და კუთხეების კიდევ უფრო შემობრუნების მიზნით.

ნაბიჯი 3: დაელოდეთ - როგორ შეგვიძლია მართოთ LED სინუსოიდული ტალღით?

შენ დამიჭირე! ჩვენ გვსურს შევისწავლოთ 3D ფერის სივრცე, რომელიც მერყეობს off (0) -დან სრულ (255) -მდე თითოეული სამი ფერისთვის, მაგრამ სინუსოიდური ტალღები განსხვავდება -1 -დან +1 -მდე. ჩვენ ვაპირებთ გავაკეთოთ პატარა მათემატიკა და პროგრამირება, რათა მივიღოთ ის, რაც გვინდა.

  • გაამრავლეთ თითოეული მნიშვნელობა 127 -ით, რომ მიიღოთ მნიშვნელობები, რომლებიც მერყეობს -127 -დან +127 -მდე
  • დაამატეთ 127 და დაამრგვალეთ თითოეული მნიშვნელობა, რომ მიიღოთ მნიშვნელობები, რომლებიც მერყეობს 0 -დან 255 -მდე (ჩვენთვის საკმარისი 255 -მდე)

მნიშვნელობები, რომლებიც მერყეობს 0-დან 255-მდე, შეიძლება წარმოდგენილ იქნეს ერთბაიტიანი ციფრებით (მონაცემთა "char" ტიპი C- ის მსგავსი Arduino პროგრამირების ენაზე), ასე რომ, ჩვენ დაზოგავთ მეხსიერებას ერთბაიტიანი გამოსახულების გამოყენებით.

მაგრამ რაც შეეხება კუთხეებს? თუ თქვენ იყენებთ გრადუსებს, სინუსოიდის კუთხეები 0 -დან 360 -მდეა. თუ თქვენ იყენებთ რადიანებს, კუთხეები მერყეობს 0 -დან 2 -ჯერ π ("pi"). ჩვენ ვაპირებთ გავაკეთოთ ის, რაც კვლავ ინარჩუნებს მეხსიერებას ჩვენს არდუინოში და ვიფიქროთ 256 ნაწილად დაყოფილ წრეზე და გვექნება "ორობითი კუთხეები" 0 -დან 255 -მდე, ასე რომ თითოეული კუთხისთვის "კუთხეები" შეიძლება იყოს წარმოდგენილია ერთბაიტიანი რიცხვებით, ან სიმბოლოებით, აქაც.

Arduino საკმაოდ გასაოცარია ზუსტად ისე, როგორც არის და მიუხედავად იმისა, რომ მას შეუძლია გამოთვალოს სინუსოიდული მნიშვნელობები, ჩვენ გვჭირდება რაღაც უფრო სწრაფად. ჩვენ წინასწარ გამოვთვლით მნიშვნელობებს და ჩავსვამთ მათ 256 ერთეულის ერთ ბაიტიან ან char მნიშვნელობებში ხანგრძლივ მასივში (იხილეთ SineTable […] დეკლარაცია არდუინოს პროგრამაში).

ნაბიჯი 4: მოდით ავაშენოთ 3D Lissacous ნიმუში

მოდით ავაშენოთ 3D LIssajous ნიმუში
მოდით ავაშენოთ 3D LIssajous ნიმუში

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

ნაბიჯი 5: განათავსეთ ეს ყველაფერი არდუინოზე

ეს ყველაფერი ერთად არდუინოზე
ეს ყველაფერი ერთად არდუინოზე

არდუინოს უმეტესობას აქვს არაერთი PWM (ან პულსის სიგანის მოდულაციის) არხი. აქ სამი დაგვჭირდება. Arduino UNO შესანიშნავია ამისათვის. პატარა 8-ბიტიანი Atmel მიკროკონტროლიც კი (ATTiny85) მუშაობს ზღაპრულად.

თითოეული PWM არხი ამოძრავებს RGB LED- ის ერთ ფერს Arduino- ს "AnalogWrite" ფუნქციის გამოყენებით, სადაც სინუსოიდური ციკლის ირგვლივ მდებარე თითოეულ წერტილში ფერის ინტენსივობა წარმოდგენილია პულსის სიგანით, ან მოვალეობის ციკლით, 0 -დან (ყველა გამორთულია) 255 -მდე (ყველაფერი ჩართულია). ჩვენი თვალები აღიქვამენ ამ განსხვავებულ პულსის სიგანეს, რომელიც საკმარისად სწრაფად მეორდება, როგორც LED- ების განსხვავებული ინტენსივობა ან სიკაშკაშე. სამივე ფერის PWM არხების შერწყმა RGB LED- ში, ჩვენ ვიღებთ 256*256*256, ანუ თექვსმეტ მილიონზე მეტ ფერს!

თქვენ უნდა შექმნათ Arduino IDE (ინტერაქტიული განვითარების გარემო) და დააკავშიროთ იგი თქვენს Arduino დაფაზე მისი USB კაბელის გამოყენებით. გაუშვით მხტუნავები PWM ამონაწერიდან 3, 5 და 6 (პროცესორის ქინძისთავები 5, 11 და 12) სამ 1 KΩ (ათასი ოჰ) რეზისტენტზე თქვენს პროტო დაფაზე ან პროტო ფარზე და რეზისტორებიდან LED R, G და B ქინძისთავები.

  • თუ RGB LED არის საერთო კათოდი (უარყოფითი ტერმინალი), მაშინ გაუშვით მავთული კათოდიდან უკან GND პინზე Arduino– ზე.
  • თუ RGB LED არის საერთო ანოდი (დადებითი ტერმინალი), მაშინ გაუშვით მავთული ანოდიდან უკან +5V პინზე Arduino– ზე.

არდუინოს ესკიზი ნებისმიერ შემთხვევაში იმუშავებს. მე შემთხვევით გამოვიყენე SparkFun Electronics / COM-11120 RGB საერთო კათოდური LED (სურათები ზემოთ, SparkFun ვებ – გვერდიდან). ყველაზე გრძელი პინი არის საერთო კათოდი.

ჩამოტვირთეთ RGB-Instructable.ino ესკიზი, გახსენით იგი Arduino IDE– ით და შეამოწმეთ მისი შედგენა. დარწმუნდით, რომ მიუთითეთ Arduino– ს სწორი სამიზნე დაფა ან ჩიპი, შემდეგ ჩადეთ პროგრამა Arduino– ში. ის დაუყოვნებლივ უნდა დაიწყოს.

თქვენ დაინახავთ RGB LED ციკლს იმდენი ფერის საშუალებით, რამდენიც შეგიძლიათ დაასახელოთ და მილიონებს ვერ შეძლებთ!

ნაბიჯი 6: რა არის შემდეგი?

ჩვენ ახლახან დავიწყეთ RGB ფერის სივრცის შესწავლა ჩვენი არდუინოთი. ზოგიერთი სხვა რამ, რაც მე გავაკეთე ამ კონცეფციით, მოიცავს:

პირდაპირ ჩაწერა ჩიპის რეგისტრებზე, ანალოგრაიტის გამოყენების ნაცვლად, მართლაც რომ დააჩქაროს საქმე

  • მიკროსქემის შეცვლა ისე, რომ IR სიახლოვის სენსორი აჩქარებს ან ანელებს ციკლს იმისდა მიხედვით, თუ რამდენად ახლოს მიხვალთ
  • Atmel ATTiny85 8 პინიანი მიკროკონტროლის დაპროგრამება Arduino ჩატვირთვის საშუალებით და ესკიზი

გირჩევთ: