Turinys:

Šviesos intensyvumo braižymas naudojant „Arduino“ir „Python“„Arduino“pagrindinę biblioteką: 5 žingsniai
Šviesos intensyvumo braižymas naudojant „Arduino“ir „Python“„Arduino“pagrindinę biblioteką: 5 žingsniai

Video: Šviesos intensyvumo braižymas naudojant „Arduino“ir „Python“„Arduino“pagrindinę biblioteką: 5 žingsniai

Video: Šviesos intensyvumo braižymas naudojant „Arduino“ir „Python“„Arduino“pagrindinę biblioteką: 5 žingsniai
Video: 88 aprašo vaizdo įrašas NPN tranzistoriaus naudojimas elektros grandinėje – LED švyturėlis 2024, Gruodis
Anonim
Šviesos intensyvumo braižymas naudojant „Arduino“ir „Python“„Arduino Master Library“
Šviesos intensyvumo braižymas naudojant „Arduino“ir „Python“„Arduino Master Library“

Kadangi „Arduino“yra ekonomiškas, tačiau labai efektyvus ir funkcionalus įrankis, jo programavimas „Embedded C“daro projektų kūrimo procesą nuobodų! „Python“modulis „Arduino_Master“tai supaprastina ir leidžia atlikti skaičiavimus, pašalinti šiukšlių vertes ir sudaryti grafiką, kad būtų galima vizualiai pateikti duomenis.

Jei dar nežinote apie šį modulį, įdiekite jį naudodami komandą pip install Arduino_Master

Nesijaudinkite, jei nežinote, kaip naudotis šiuo moduliu, apsilankykite šioje nuorodoje => Arduino_Master

Tačiau šio projekto kodas visada bus pateiktas šioje instrukcijoje.

Prekės

Šiam projektui jums reikės:

  1. Arduino
  2. Nuo šviesos priklausomas rezistorius (LDR) ir
  3. Python 3 įdiegta jūsų kompiuteryje.

1 žingsnis: sukurkite grandinę:

Sukurkite savo grandinę
Sukurkite savo grandinę

Norėdami gauti įvesties duomenis, naudosime „Arduino“kaištį A1. Vietoj akumuliatoriaus taip pat galite naudoti „Arduino“5V ir GND kaiščius. Užmegzkite ryšį taip:

  1. Prijunkite vieną LDR galą prie teigiamo 5V akumuliatoriaus gnybto arba prie „Arduino“5V kaiščio.
  2. Prijunkite kitą LDR galą lygiagrečiai prie kaiščio A1 ir neigiamo akumuliatoriaus gnybto arba „Arduino“GND kaiščio.
  3. Naudokite rezistorių, kad įsitikintumėte, jog visa srovė nepatenka į GND, todėl negausite pakankamai stipraus signalo, kad galėtumėte pajusti „Arduino“A1 terminalą. (Aš naudoju 10k omų rezistorių).

2 žingsnis: „Arduino“programavimas:

„Arduino_Master“modulis naudoja „Arduino“serijinį monitorių duomenims siųsti ir gauti. Šio modulio naudojimo pranašumas yra tas, kad užprogramavę „Arduino“, galite pakeisti tik „python“programą skirtingiems projektams, nes programavimas „python“yra palyginti lengvesnis!

Kodas:

// LDR_1 kintamasis naudojamas žymėti „Arduino“kaištį A1.

int LDR_1 = A1;

// Iš A1 gauti duomenys bus saugomi LDR_Value_1.

plūdė LDR_Value_1;

Styginių įvestis;

negaliojanti sąranka ()

{pinMode (LDR_1, INPUT); // LDR_1 nustatytas kaip įvesties kaištis. Serial.begin (9600); // Ryšio duomenų perdavimo sparta nustatyta kaip 9600.}

tuštumos kilpa ()

{if (Serial.available ()> 0) // jei serijiniame monitoriuje yra įvesties, tęskite. {input = Serial.readString (); // Įvestį skaitykite kaip eilutę. if (įvestis == "DUOMENYS") {LDR_Value_1 = analogRead (LDR_1) * (5.0 / 1023,0); // (5/1023) yra konversijos koeficientas, norint gauti vertę voltais. Serial.println (LDR_Value_1); // Jei įvestis yra lygi „DATA“, perskaitykite įvestį iš LDR_1 ir atsispausdinkite ją serijiniame monitoriuje. } else int i = 0; // jei įvestis nėra lygi "DATA", nieko nedarykite! }

}

3 veiksmas: „Python“programavimas, norint grafikuoti duomenis iš „Arduino“:

Kiekvienas LDR turi savo pasipriešinimo vertes ir turime prisiminti, kad „ne“elektroniniams komponentams veikia visiškai vienodai. Taigi pirmiausia turime rasti įtampą esant skirtingam šviesos intensyvumui.

Įkelkite šią programą į savo „python IDE“ir paleiskite ją:

Padarykite tai skirtingo intensyvumo šviesai ir naudodamiesi grafiku padarykite išvadą, pavyzdžiui, jei intensyvumas yra mažesnis nei 1, kambarys yra per tamsus. Jei intensyvumas yra nuo 1 iki 2, kambarys yra labai tamsus. Jei intensyvumas didesnis nei 2, šviesa įjungiama.

# Importuojamas „Arduino_Master“modulis

iš „Arduino_Master import“*

# renka duomenis

duomenys = filtras (ardata (8, suspaudimas = klaidinga, dinamiška = tiesa, žinutė = "DUOMENYS", eilutės = 30), numatomas_ tipas = 'num', riba = [0, 5])

# riba nustatyta į 5, nes naudojame 5 V bateriją.

# Vertybių brėžimas

Diagrama (duomenys, stl = 'dark_background', label = 'Light Intensity')

4 žingsnis: galutinė programa, skirta patikrinti šviesos intensyvumą kambaryje

Padarę išvadą iš gautų duomenų, įkelkite šią programą ir būtinai pakeiskite apribojimus pagal savo išvadą.

# Importuojamas „Arduino_Master“modulis

iš „Arduino_Master import“# duomenų duomenų rinkimas = filtras (ardata (8, squeeze = False, dynamic = True, msg = "DATA", lines = 50), laukiamo_tipo = 'num', limit = [0, 5]) #classifying data remiantis išvada info = i diapazone (len (duomenys)): intensyvumas = duomenys jei intensyvumas 1 ir intensyvumas = 2: info.append ('Light ON') # Grafiko brėžimas. compGraph (duomenys, informacija, stl = 'dark_background', label1 = 'Light Intensity', label2 = 'State')

5 žingsnis: rezultatas:

Rezultatas
Rezultatas

Programa paleidžiama minutę ar dvi, nes skaitote 50 momentinių „Arduino“verčių.

Jei norite pagreitinti procesą, pabandykite pakeisti ardata funkcijos eilučių parametrą. Tačiau atminkite, kad kuo mažiau stebėjimų, tuo prastesnė bus duomenų kokybė.

Pastaba: Jei visas grafikas aukščiau esančioje nuotraukoje nematomas, žiūrėkite diagramą virš įvado skyriaus.

Rekomenduojamas: