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

ფოტორეზისტორები გაძლევთ შესაძლებლობას განსაზღვროთ სინათლის ინტენსივობა.

ისინი მცირეა, იაფია, საჭიროებენ მცირე ენერგიას, ადვილად გამოსაყენებელი და პრაქტიკულად ურღვევია.

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

ფოტორეზისტორები არსებითად არის რეზისტორები, რომლებიც ცვლის მათ წინააღმდეგობას (იზომება ohms-ში) იმისდა მიხედვით, თუ რამდენ შუქს ურტყამს მათ სენსორულ ელემენტებს. როგორც ზემოთ აღინიშნა, ისინი ძალიან იაფია, აქვთ სხვადასხვა ზომები და სპეციფიკაციები, მაგრამ მათი უმეტესობა არც თუ ისე ზუსტია. თითოეული ფოტორეზისტორი იქცევა ოდნავ განსხვავებულად მეორისგან, მაშინაც კი, თუ ისინი მწარმოებლის ერთი და იგივე ჯგუფიდან არიან. განსხვავებები კითხვაში შეიძლება იყოს 50% ან მეტი! ასე რომ, არ უნდა დაეყრდნოთ ზუსტი გაზომვებს. ისინი ძირითადად გამოიყენება განათების საერთო დონის დასადგენად კონკრეტულ, „ლოკალურ“ და არა „აბსოლუტურ“ პირობებში.

ფოტორეზისტორები შესანიშნავი არჩევანია ისეთი პრობლემების გადასაჭრელად, როგორიცაა "ირგვლივ ბნელია ან მსუბუქია", "არის თუ არა რაიმე სენსორის წინ (რაც ზღუდავს სინათლის ნაკადს)", "რომელ ზონას აქვს განათების მაქსიმალური დონე".


ფოტორეზისტორების საშუალო ტექნიკური მახასიათებლები

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

  • ზომა: მრგვალი, 5 მმ (0.2 ") დიამეტრის (სხვა ფოტორეზისტორები შეიძლება იყოს 12 მმ / 0.4" დიამეტრამდე!).
  • ფასი: დაახლოებით $1.00 Adafruit მაღაზიაში.
  • წინააღმდეგობის დიაპაზონი: 200 kΩ (მუქი) დან 10 kΩ (მსუბუქი).
  • მგრძნობელობის დიაპაზონი: სენსორები იჭერენ ტალღის სიგრძეს 400 ნმ-დან (იისფერი) 600 ნმ-მდე (ნარინჯისფერი).
  • ელექტრომომარაგება: ნებისმიერი ძაბვის 100 ვ-მდე, გამოიყენეთ საშუალო დენი დაახლოებით 1 mA (დამოკიდებულია მიწოდების ძაბვაზე).

პრობლემები მრავალი სენსორის გამოყენებისას

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

სინათლის დონის გაზომვა

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


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

ფოტორეზისტორები არ აღიქვამენ სინათლის ტალღების მთელ დიაპაზონს. უმეტეს ვერსიებში, ისინი მგრძნობიარეა სინათლის ტალღების მიმართ 700 ნმ (წითელი) და 500 ნმ (მწვანე) დიაპაზონში.


ანუ, სინათლის ტალღის დიაპაზონის მითითება, რომელიც შეესაბამება ლურჯს, არ იქნება ისეთი ეფექტური, როგორც მწვანე/ყვითელი დიაპაზონის მითითება!

რა არის საზომი ერთეული "ლუქსი"?

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


ფოტორეზისტორის შემოწმება

თქვენი ფოტორეზისტორის შესამოწმებლად უმარტივესი გზაა მულტიმეტრის დაკავშირება წინააღმდეგობის გაზომვის რეჟიმში სენსორის ორ კონტაქტთან და თვალყური ადევნეთ წინააღმდეგობის ცვლილებას გამოსავალზე, როცა სენსორს ხელისგულით აფარებთ, გამორთეთ ოთახში შუქი და ა.შ. ვინაიდან წინააღმდეგობა იცვლება დიდ დიაპაზონში, ავტომატური რეჟიმი კარგად მუშაობს. თუ არ გაქვთ ავტომატური რეჟიმი ან ის სწორად არ მუშაობს, სცადეთ 1 MΩ და 1 kΩ დიაპაზონი.



ფოტორეზისტორის კავშირი

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


ფოტორეზისტორები მართლაც უპრეტენზიოა. შეგიძლიათ დაამაგროთ ისინი, დააინსტალიროთ პურის დაფაზე, გამოიყენოთ კლიპები დასაკავშირებლად. ერთადერთი, რაც უნდა გააკეთოთ, არის ძალიან ხშირად მოხაროთ „ფეხები“, რადგან ისინი ადვილად იშლება.


ფოტორეზისტორების გამოყენებით

ანალოგური ძაბვის წაკითხვის მეთოდი

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


ამ მაგალითში დაკავშირებულია 5V დენის წყარო, მაგრამ გახსოვდეთ, რომ თქვენ ასევე შეგიძლიათ გამოიყენოთ 3.3V წყარო. ამ შემთხვევაში, ანალოგური ძაბვის მნიშვნელობები იქნება 0-დან 5V-მდე, ანუ დაახლოებით ტოლი. მიწოდების ძაბვამდე.

იგი მუშაობს შემდეგნაირად: როდესაც ფოტორეზისტორის წინააღმდეგობა მცირდება, ფოტორეზისტორისა და ჩამოსაშლელი რეზისტორის მთლიანი წინააღმდეგობა მცირდება 600 kOhm-დან 10 kOhm-მდე. ეს ნიშნავს, რომ ორივე რეზისტორში დენი იზრდება, რაც იწვევს ძაბვის მატებას 10K რეზისტორზე. Სულ ეს არის!


ეს ცხრილი გვიჩვენებს ანალოგური ძაბვის სავარაუდო მნიშვნელობებს განათების / წინააღმდეგობის დონის მიხედვით 5 ვ მიწოდების ძაბვით და 10 kΩ ჩამოსაშლელი რეზისტორით.

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

გარდა ამისა, თქვენ ასევე შეგიძლიათ გამოიყენოთ ფორმულა "Axel Benz" მინიმალური და მაქსიმალური წინააღმდეგობის მნიშვნელობის ძირითადი გაზომვისთვის მულტიმეტრით და შემდეგ იპოვოთ რეზისტორის წინაღობის მნიშვნელობა: ჩამოწიეთ რეზისტორი = კვადრატული ფესვი (Rmin * Rmax), რომელიც მოგცემთ ბევრად უკეთეს შედეგს.შედეგი სახით:


ზემოთ მოყვანილი ცხრილი გვიჩვენებს ანალოგური ძაბვის სავარაუდო მნიშვნელობებს 5 ვ სენსორის გამოყენებისას 1 kΩ ჩამოსაშლელი რეზისტორით.

არ დაგავიწყდეთ, რომ ჩვენი მეთოდი არ გვაძლევს ძაბვის ხაზოვან დამოკიდებულებას განათებაზე! გარდა ამისა, თითოეული სენსორი განსხვავდება თავისი მახასიათებლებით. სინათლის დონის მატებასთან ერთად, ანალოგური ძაბვა გაიზრდება და წინააღმდეგობა დაეცემა:

Vo = Vcc (R / (R + ფოტოცელი))

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

ფოტორეზისტორის გამოყენების მარტივი მაგალითი

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


ეს მაგალითი ვარაუდობს, რომ თქვენ იცნობთ Arduino პროგრამირების საფუძვლებს.

/ * მარტივი ფოტორეზისტორის ტესტის ესკიზი.

შეაერთეთ ფოტორეზისტორის ერთი ფეხი 5 ვ-ზე, მეორე კი ანალოგ 0 პინზე.

შემდეგ დააკავშირეთ 10K რეზისტორი ანალოგ 0-სა და მიწას შორის.

შეაერთეთ LED რეზისტორის მეშვეობით პინ 11-სა და მიწას შორის. */

int photocellPin = 0; // სენსორი და 10k ჩამოსაშლელი რეზისტორი, რომელიც დაკავშირებულია a0-თან

int photocellReading; // წაიკითხეთ ანალოგური მნიშვნელობები სენსორის გამყოფიდან

int LEDpin = 11; // დააკავშირეთ წითელი LED პინ 11-თან (PWM pin)

int LED სიკაშკაშე; //

ბათილად დაყენება (ბათილი) (

// ჩვენ გამოგიგზავნით გამართვის ინფორმაციას სერიულ მონიტორზე

Serial.begin (9600);

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

Serial.println (photocellreading); // ანალოგური მნიშვნელობები სენსორიდან

// LED ანათებს უფრო კაშკაშა, თუ სენსორზე სინათლის დონე მცირდება

// ეს ნიშნავს, რომ წაკითხული მნიშვნელობები უნდა გადავაბრუნოთ 0-1023-დან 1023-0-მდე

photocellReading = 1023 - photocellReading;

// ახლა ჩვენ უნდა გადავიყვანოთ დიაპაზონი 0-1023 0-255-ად, რადგან ეს არის დიაპაზონი, რომელიც იყენებს ანალოგს Write

LED სიკაშკაშე = რუკა (photocellReading, 0, 1023, 0, 255);

analogWrite (LEDpin, LED სიკაშკაშე);


თქვენ შეგიძლიათ სცადოთ სხვა რეზისტორები სინათლის დონის მიხედვით, რომლის გაზომვაც გსურთ!

მარტივი კოდი ანალოგური სინათლის დონის გაზომვისთვის

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


/ * მარტივი ფოტორეზისტორის ტესტის ესკიზი.

შეაერთეთ ფოტორეზისტორის ერთი ფეხი 5 ვ-ზე, მეორე კი ანალოგ 0 პინზე.

შემდეგ შეაერთეთ 10K რეზისტორის პინი მიწასთან, ხოლო მეორე ანალოგურ პინთან Analog 0 * /

int photocellPin = 0; // სენსორი და 10k ჩამოსაშლელი რეზისტორი, რომელიც დაკავშირებულია a0-თან

int photocellReading; // მონაცემები წაკითხული ანალოგური პინიდან

ბათილად დაყენება (ბათილი) (

// გამართვის ინფორმაციის გადაცემა სერიულ მონიტორზე

Serial.begin (9600);

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

photocellReading = analogRead (photocellPin);

Serial.print ("ანალოგური კითხვა =");

Serial.print (photocellReading); // ანალოგური მნიშვნელობები

თუ (ფოტოუჯრედის წაკითხვა

Serial.println ("- მუქი");

სხვა თუ (ფოტოუჯრედის წაკითხვა

Serial.println ("- Dim");

სხვა თუ (ფოტოუჯრედის წაკითხვა

Serial.println ("- მსუბუქი");

სხვა თუ (ფოტოუჯრედის წაკითხვა

Serial.println ("- Bright");

Serial.println ("- ძალიან ნათელი");

ეს შემოწმება ტარდებოდა ოთახში დღის განმავლობაში. სენსორს ხელი დავფარე, შემდეგ კი ნაჭერი.


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

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

ქვემოთ მოცემულია ოსცილოგრამის ნაწილი, რომელიც ახასიათებს რა ხდება ზუსტად ციფრულ პინთან (ყვითელი). ლურჯი ხაზი გვიჩვენებს, როდის იწყებს მუშაობას თავად Arduino-ს ესკიზი და როდის ამთავრებს მუშაობას (დაახლოებით 1,2 ms ხანგრძლივობის მონაკვეთი).


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


ჩვენს შემთხვევაში, "კალათი" არის 0.1 μF კერამიკული რეზისტორი. შეგიძლიათ ექსპერიმენტი გააკეთოთ კონდენსატორის ტევადობაზე. და ეს მაჩვენებელი პირდაპირ გავლენას მოახდენს დროს. თუ გსურთ გაზომოთ სინათლის დონე, გამოიყენეთ 1uF კონდენსატორი. თუ თქვენ მუშაობთ დაბალი განათების პირობებში, შეგიძლიათ გამოიყენოთ 0.01uF კონდენსატორი.

/ * მარტივი ჩანახატი ფოტორეზისტორის მუშაობის შესამოწმებლად.

შეაერთეთ ფოტორეზისტორის ერთი ფეხი დენზე, მეორე კი პინ 2-ზე.

ამის შემდეგ, შეაერთეთ 0.1 uF კონდენსატორის ერთი ფეხი პინ 2-ზე, ხოლო მეორე დამიწებაზე * /

int photocellPin = 2; // ფოტორეზისტორი, რომელიც დაკავშირებულია პინ 2-თან

int photocellReading; // ციფრული მნიშვნელობები

int ledPin = 13; // შეგიძლიათ გამოიყენოთ ჩაშენებული LED

ბათილად დაყენება (ბათილი) (

// გაგზავნეთ ინფორმაცია გამართვისთვის სერიული მონიტორის ფანჯარაში გამოსატანად

Serial.begin (9600);

pinMode (ledPin, OUTPUT); // გამოიყენე LED გამომავალი

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

// კითხულობს სენსორიდან RCtime ტექნოლოგიის გამოყენებით

photocellReading = RCtime (photocellPin);

თუ (ფოტოუჯრედის წაკითხვა == 30000) (

// თუ ჩვენებები 30000-ს მიაღწევს, ეს ნიშნავს, რომ ჩვენ მივაღწიეთ ზღვრულ მნიშვნელობას

Serial.println ("არაფერი დაკავშირებული!");

Serial.print ("RCtime reading =");

Serial.println (photocellreading); // წაკითხული ანალოგური მონაცემების ნაკადი

// რაც უფრო კაშკაშა, მით უფრო ხშირად ციმციმებს LED!

digitalWrite (ledPin, HIGH);

დაგვიანება (ფოტოუჯრედის წაკითხვა);

digitalWrite (ledPin, LOW);

დაგვიანება (ფოტოუჯრედის წაკითხვა);

// გამოიყენეთ ციფრული პინი წინააღმდეგობის გასაზომად

// ამას ვაკეთებთ კონდენსატორის დენის მიწოდებით და

// გამოთვლა რამდენი ხანი დასჭირდება Vcc / 2-ის მიღწევას (არდუინოების უმეტესობისთვის ეს არის 2.5 ვ)

int RCtime (int RCpin) (

int კითხვა = 0; // იწყება 0-დან

// ინიციალიზაცია მოახდინეთ პინის გამოსავალად და დააყენეთ იგი LOW-ზე (დამიწება)

pinMode (RCpin, OUTPUT);

digitalWrite (RCpin, LOW);

// ახლა დააყენეთ პინი შეყვანად და ...

pinMode (RCpin, INPUT);

while (ციფრული წაკითხვა (RCpin) == LOW) (// დაითვალეთ დრო, რომელიც სჭირდება მაღალი მნიშვნელობის მისაღებად

კითხვა ++; // მატება დროისთვის

თუ (კითხვა == 30000) (

// თუ ამ დონემდე მივალთ, წინააღმდეგობა იმდენად დიდია

// რომ დიდი ალბათობით არაფერია დაკავშირებული!

შესვენება; // ციკლიდან გასვლა

Arduino პროექტების ვიდეო ფოტორეზისტორების გამოყენებით

ძრავის სიჩქარის შეცვლა ფოტორეზისტორის გამოყენებით:

რობოტი აკონტროლებს მოძრაობის ტრაექტორიას ფოტორეზისტორის გამოყენებით:

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

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

ფოტოტრანზისტორი
ამ ბოლო დროს მუდმივად ვხვდებოდი მათ, ფოტოტრანზისტორების ამოუწურავი წყაროს - ხუთ დიუმიანი ფლოპი დისკებს. ბოლო დროს, როდესაც ჭუჭყის ფასად, რადიო რწყილების ბაზარზე დავდე დაახლოებით 5 ცალი ცხვირსახოცი აღმოჩენებიდან, იქ ტრანზისტორები დგანან ხვრელების საპირისპიროდ, ფლოპი დისკის ჩაწერისა და ბრუნვის გასაკონტროლებლად. კიდევ ერთი ორმაგი ფოტოტრანზისტორი (ან შესაძლოა ფოტოდიოდი, როგორც ამას იღბალი მოჰყვება) არის ჩვეულებრივი ბურთიანი მაუსი.
ჩვეულებრივ LED-ს ჰგავს, მხოლოდ კორპუსია გამჭვირვალე. თუმცა, LED-ები ასევე იგივეა, ასე რომ დაბნეული, რომელი მათგანი არის ერთი დასაფურთხებელი. მაგრამ არა უშავს, პარტიზანი ადვილად გამოითვლება ჩვეულებრივი მულტიმეტრით. საკმარისია ჩართოთ ომმეტრი მის ემიტერსა და კოლექტორს შორის (მას არ აქვს საფუძველი) და გაბრწყინდეს მასზე, რადგან მისი წინააღმდეგობა უბრალოდ კატასტროფულად ჩამოიშლება - ათეულ კილო-ომიდან რამდენიმე ომამდე. ის, რაც მე მაქვს რობოტში გადაცემათა როტაციის დეტექტორში, ცვლის წინააღმდეგობას 100 kOhm-დან 30 Ohm-მდე. ფოტოტრანზისტორი მუშაობს როგორც ჩვეულებრივი - ის ატარებს დენს, მაგრამ როგორც საკონტროლო მოქმედება არ არის ბაზის დენი, არამედ მანათობელი ნაკადი.

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

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

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

კავშირი
ახლა დროა ვაჩვენოთ, როგორ დააკავშიროთ ეს მიკროკონტროლერთან. ფოტორეზისტორით ყველაფერი ნათელია, აქ არანაირი პრობლემა არ არის - აიღებთ და ამაგრებთ, როგორც სქემის მიხედვით.
ფოტოდიოდი და ფოტოტრანზისტორი უფრო რთულია. აუცილებელია დადგინდეს, სად არის მისი ანოდი/კათოდი ან ემიტერი/კოლექტორი. ეს კეთდება უბრალოდ. აიღებთ მულტიმეტრს, აყენებთ დიოდის აკრეფის რეჟიმში და ეკიდება თქვენს სენსორს. ამ რეჟიმში მულტიმეტრი აჩვენებს ძაბვის ვარდნას დიოდზე / ტრანზისტორზე, ხოლო ძაბვის ვარდნა აქ ძირითადად დამოკიდებულია მის წინააღმდეგობაზე U = I * R. თქვენ იღებთ და აანთებთ სენსორს, წაკითხვის შემდეგ. თუ რიცხვი მკვეთრად დაეცა, მაშინ სწორად გამოიცანით და წითელი მავთული თქვენს კათოდზე / კოლექტორზეა, ხოლო შავი - ანოდზე / ემიტერზე. თუ ის არ შეცვლილა, შეცვალეთ ქინძისთავები. თუ არ შველის, მაშინ ან დეტექტორი მკვდარია, ან ცდილობთ პასუხის მიღებას შუქდიოდისგან (სხვათა შორის, LED-ებიც შეიძლება გამოვიდნენ სინათლის დეტექტორებად, მაგრამ იქ არც ისე მარტივია. თუმცა როცა მაქვს დროა გაჩვენებთ ამ ტექნოლოგიურ გარყვნილებას).


ახლა რაც შეეხება მიკროსქემის მუშაობას, აქ ყველაფერი ელემენტარულია. ჩაბნელებულ მდგომარეობაში ფოტოდიოდი არ გადის დენს საპირისპირო მიმართულებით, ფოტოტრანზისტორიც დახურულია და ფოტორეზისტორის წინააღმდეგობა ძალიან მაღალია. შეყვანის წინააღმდეგობა ახლოს არის უსასრულობასთან, რაც ნიშნავს, რომ შეყვანას ექნება სრული მიწოდების ძაბვა, იგივე ლოგიკური ერთეული. ახლა ღირს დიოდის / ტრანზისტორი / რეზისტორის განათება, რადგან წინააღმდეგობა მკვეთრად ეცემა და გამომავალი აღმოჩნდება მჭიდროდ დარგული მიწაზე, ან მიწასთან ძალიან ახლოს. ნებისმიერ შემთხვევაში, წინააღმდეგობა გაცილებით დაბალი იქნება ვიდრე 10kΩ რეზისტორზე, რაც ნიშნავს, რომ ძაბვა უეცრად გაქრება და იქნება სადღაც ლოგიკურ ნულოვან დონეზე. AVR-ში და PIC-ში რეზისტორის ჩასმაც არ გჭირდებათ, საკმარისია შიდა ამოღება. ასე რომ, DDRx = 0 PORTx = 1 და ბედნიერი იქნებით. ისე, ჩვეულებრივი ღილაკივით გადაატრიალეთ. ერთადერთი სირთულე შეიძლება წარმოიშვას ფოტორეზისტორთან - მისი წინააღმდეგობა ასე მკვეთრად არ ეცემა, ამიტომ შეიძლება ნულამდეც არ მიაღწიოს. მაგრამ აქ შეგიძლიათ ითამაშოთ ასაწევი რეზისტორის ზომა და დარწმუნდით, რომ წინააღმდეგობის ცვლილება საკმარისია ლოგიკური დონის გასავლელად.

თუ საჭიროა განათების გაზომვა და არა სულელურად დაჭერა სინათლე / სიბნელე, მაშინ საჭირო იქნება ყველაფრის მიბმა ADC-ზე და აწევის რეზისტორის ცვლადი გახადეთ პარამეტრების დასარეგულირებლად.

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

ZY
პარკები მაქვს აქ, ასე რომ საიტი ძალიან დებილი იქნება განახლებით, მგონი თვის ბოლომდე იქნება. შემდეგ იმედი მაქვს, იგივე რიტმს დავუბრუნდები.

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

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


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

ფოტორეზისტორი აქ არის, გვერდით არის 10 კილომიანი რეზისტორი, ცისფერი ჯემპერი მიდის მინუსზე, ნარინჯისფერი ერთ ბოლოში უკავშირდება შუა წერტილს, რეზისტორსა და ფოტორეზისტორს შორის, მეორე ბოლო დაფასთან. არდუინო, A0-ში (ანალოგური პინი).

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

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

const int NbrLEDs = 8;

მოდით გავაკეთოთ მასივი პინის ნომრებით, გამოვიყენოთ 5 6 7 8 9 10 11 12 ციფრული კონექტორები, მივუთითოთ პინის ნომერი, რომელზედაც ამოღებულია განათების დონე, გამოვაცხადოთ ცვლადი ფოტორეზისტორისთვის, სენსორის მნიშვნელობა და ასევე გამოვაცხადოთ განათების დონე. რომ ქინძისთავებით დავშალოთ ისინი.

const int ledPins = (5, 6, 7, 8, 9, 10, 11, 12); const int photocellPin = A0; int sensorValue = 0; int ledLevel = 0;

დაყენების ქვეპროგრამაში ჩვენ დავწერთ ციკლს, რომელშიც, იმისათვის, რომ არ მივაკუთვნოთ თითოეული მნიშვნელობა, რომელიც გადის pinMode-ის მეშვეობით, გავავლებთ ყველა პინს, მივანიჭებთ მათ პინმოდში არსებულ მნიშვნელობებს მასივიდან და მივანიჭებთ OUTPUT მნიშვნელობას. თითოეული პინი.

void setup () (for (int led = 0; led< NbrLEDs; led++) { pinMode(ledPins, OUTPUT); } }

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

pinMode (5, OUTPUT); pinMode (6, OUTPUT);

მარყუჟში, ჩვენ ვიღებთ სენსორის მნიშვნელობას analogRead-ის წაკითხვით pin A0-დან.

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

იხილეთ ასევე ვიდეო Photoresistor და LED-ები Arduino-ზე - (ვიდეო), ბმული გაიხსნება ახალ ჩანართში.

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

თუ არა, ჩვენ ჩავწერთ მასში ძაბვის არარსებობას და LED არ ანათებს.

void loop () (sensorValue = analogRead (photocellPin); ledLevel = რუკა (sensorValue, 300, 1023, 0, NbrLEDs); for (int led = 0; led< NbrLEDs; led++) { if (led < ledLevel) { digitalWrite(ledPins, HIGH); } else { digitalWrite(ledPins,LOW); } } }

კოდის გასწორება კლავიატურის მალსახმობის საშუალებით ctrl + Tდა ახლა ვნახოთ რა მოხდება, გაუშვით გადამოწმებისთვის, შეინახეთ ესკიზი.

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


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


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


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

ესკიზში მიღებულია განათების განაწილება 300 ადრე 1023 (მაქსიმალური მნიშვნელობა), საწყისი ბარიერის შეცვლის მცდელობა 0 - არანაირ შედეგს არ იძლევა.

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

ახლა თქვენ უნდა გამოაკლოთ 128 1023-ს, დააყენოთ მნიშვნელობა 895, შემდეგ, ლოგიკის მიხედვით, ყველაფერი კარგად უნდა იყოს. გადმოვწეროთ და ვნახოთ რა შეიცვლება.

void loop () (sensorValue = analogRead (photocellPin); ledLevel = რუკა (sensorValue, 0, 895, 0, NbrLEDs); for (int led = 0; led< NbrLEDs; led++) { if (led < ledLevel) { digitalWrite(ledPins, HIGH); } else { digitalWrite(ledPins,LOW); } } }

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

საწყის მნიშვნელობას კვლავ სჭირდება 300 დაბრუნება, რადგან ის მიეწოდება ამ პირველ სამ დენის LED-ს. შევცვალოთ ესკიზში 0-დან 300-მდე, როგორც იქნა, ეს გაკეთდა მიზეზის გამო, გადატვირთეთ ესკიზი და ვნახოთ რა იცვლება ამჯერად...

void loop () (sensorValue = analogRead (photocellPin); ledLevel = რუკა (sensorValue, 300, 895, 0, NbrLEDs); for (int led = 0; led< NbrLEDs; led++) { if (led < ledLevel) { digitalWrite(ledPins, HIGH); } else { digitalWrite(ledPins,LOW); } } }

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


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


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


ჩვენ ვაგრძელებთ გაკვეთილების სერიას "". დღეს ჩვენ ვუერთებთ ფოტორეზისტორს (ფოტოცელა) Arduino-ს დაფას. ფოტორეზისტორები გამოიყენება რობოტებში, როგორც სინათლის სენსორები. სტატიაში მოცემულია ვიდეო ინსტრუქცია, პროგრამის ჩამონათვალი, კავშირის დიაგრამა და საჭირო კომპონენტები.

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

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

ვიდეო ინსტრუქცია Arduino მოდელის ფოტორეზისტორით აწყობისთვის:

მოდელის სერვო დისკის ასაწყობად, ჩვენ გვჭირდება:

  • არდუინოს დაფა
  • 6 მავთული "მამა-მამა"
  • ფოტორეზისტორი
  • სინათლის დიოდი
  • 220 ohm რეზისტორი
  • 10K რეზისტორი
  • Arduino IDE პროგრამა, რომლის ჩამოტვირთვა შესაძლებელია Arduino ვებსაიტიდან.

გაყვანილობის დიაგრამა Arduino მოდელისთვის ფოტორეზისტორით:

Arduino ფოტორეზისტორის შეერთების დიაგრამა

ამ მოდელის მუშაობისთვის შესაფერისია შემდეგი პროგრამა (შეგიძლიათ უბრალოდ დააკოპიროთ პროგრამა Arduino IDE-ში):

int led = 13; // ცვლადი LED-ის პინის ნომრით
int ldr = 0; // და ფოტორეზისტორი
void setup () // დაყენების პროცედურა
{
pinMode (led, OUTPUT); // მიუთითებს, რომ LED არის გამომავალი
}
void loop () // loop პროცედურა
{
თუ (ანალოგური წაკითხვა (ldr)< 800) digitalWrite(led, HIGH);
// თუ განათების ინდექსი 800-ზე ნაკლებია, ჩართეთ LED
else digitalWrite (led, LOW); // წინააღმდეგ შემთხვევაში გამორთეთ
}

ასე გამოიყურება აწყობილი Arduino მოდელი ფოტორეზისტორით:

მზა მოდელი ფოტორეზისტორის Arduino-სთან დასაკავშირებლად

თუ LED არ პასუხობს განათების ცვლილებებს, მაშინ სცადეთ ნომრის შეცვლა 800 პროგრამაში, თუ ის მუდმივად არის ჩართული - შემცირება, თუ არ არის განათებული - გაზარდეთ.

გაკვეთილის პოსტები:

  1. Პირველი გაკვეთილი:
  2. მეორე გაკვეთილი:
  3. მესამე გაკვეთილი:
  4. მეოთხე გაკვეთილი:
  5. მეხუთე გაკვეთილი:
  6. მეექვსე გაკვეთილი:
  7. მეშვიდე გაკვეთილი:
  8. მერვე გაკვეთილი:
  9. მეცხრე გაკვეთილი:

საიტის ყველა პოსტი "გასართობი რობოტიკა" ტეგის მიხედვით.

ჩვენი YouTube არხისადაც ქვეყნდება ვიდეო გაკვეთილები.

ახალი სტატიები

● პროექტი 13: ფოტორეზისტორი. ჩვენ ვამუშავებთ განათებას LED-ების განათებით ან ჩაქრობით

ამ ექსპერიმენტში ჩვენ გავეცნობით განათების საზომ ანალოგურ სენსორს - ფოტორეზისტორს (სურ.13.1).

საჭირო კომპონენტები:

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

ბრინჯი. 13.2. ფოტორეზისტორის გაყვანილობის დიაგრამა Arduino-ზე

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

ინტ სინათლე; // ცვლადი ფოტორეზისტორის მონაცემების შესანახად ბათილი დაყენება ()(Serial.begin (9600);) ბათილი მარყუჟი ()(შუქი = ანალოგური წაკითხვა (0); Serial.println (მსუბუქი); დაყოვნება (100);)
კავშირის პროცედურა:

1. ვუერთებთ ფოტორეზისტორს ნახ. 13.2.
2. ჩატვირთეთ ესკიზი 13.1 ჩამონათვალიდან Arduino-ს დაფაზე.
3. ჩვენ ვარეგულირებთ ფოტორეზისტორის განათებას ხელით და ვაკვირდებით გამომავალს ცვალებად მნიშვნელობების სერიულ პორტში, ვიხსენებთ კითხვებს ოთახის სრული განათებისას და მანათობელი ნაკადის სრული გადახურვისას.

ახლა მოდით შევქმნათ სინათლის ინდიკატორი 8 LED-იანი LED რიგის გამოყენებით. განათებული LED-ების რაოდენობა მიმდინარე განათების პროპორციულია. ჩვენ ვაგროვებთ LED-ებს ნახ. 13.3 220 ომიანი შემზღუდველი რეზისტორების გამოყენებით.

ბრინჯი. 13.3. ფოტორეზისტორისა და LED-ების გაყვანილობის დიაგრამა Arduino-ზე


ესკიზის შინაარსი LED ზოლზე მიმდინარე განათების ჩვენებისთვის ნაჩვენებია ჩამონათვალში 13.2.

// კონტაქტი LED-ების დასაკავშირებლად const int leds = (3, 4, 5, 6, 7, 8, 9, 10); const int LIGHT = A0; // პინი A0 ფოტორეზისტორის შესაყვანად const int MIN_LIGHT = 200; // განათების ქვედა ზღვარი const int MAX_LIGHT = 900; // განათების ზედა ზღვარი // ცვლადი ფოტორეზისტორის მონაცემების შესანახად int val = 0; ბათილი დაყენება (){ // LED ქინძისთავების კონფიგურაცია გამოსავალად for (int i = 0; i<8 ;i++) pinMode(leds[i],OUTPUT); } ბათილი მარყუჟი ()(val = ანალოგური წაკითხვა (LIGHT); // წაიკითხეთ ფოტორეზისტორის წაკითხვები // რუკის () ფუნქციის გამოყენება val = რუკა (val, MIN_LIGHT, MAX_LIGHT, 8, 0); // ვზღუდავთ ისე, რომ საზღვრებს არ გადააჭარბოს val = შეზღუდვა (val, 0, 8); // განათება განათების პროპორციული LED-ების რაოდენობა, // ჩაქრება დანარჩენი for (int i = 1; i<9 ;i++) { if (i>= ვალ) // აანთეთ LED-ები digitalWrite (leds, HIGH); სხვა // გამორთეთ LED-ები digitalWrite (leds, LOW); ) დაგვიანებით (1000); // პაუზა მომდევნო გაზომვამდე }
კავშირის პროცედურა:

1. ვუერთებთ ფოტორეზისტორს და LED-ებს ნახ. 13.3.
2. ჩატვირთეთ ესკიზი 13.2 ჩამონათვალიდან Arduino-ს დაფაზე.
3. ფოტორეზისტორის განათებას ხელით ვარეგულირებთ და განათებულ LED-ების რაოდენობით ვადგენთ მიმდინარე განათების დონეს (სურ. 13.3).

ჩვენ ვიღებთ განათების ქვედა და ზედა საზღვრებს დამახსოვრებული მნიშვნელობებიდან წინა ესკიზზე ექსპერიმენტის შესრულებისას (ჩამონათვალი 13.1). ჩვენ გავაფართოვებთ შუალედურ განათების მნიშვნელობას 8 მნიშვნელობით (8 LED) და ვანათებთ LED-ების რაოდენობას ქვედა და ზედა ზღვრებს შორის მნიშვნელობის პროპორციულად.

პროგრამების ჩამონათვალი