INHOUDSOPGAWE:

Ligte intensiteit planne met behulp van Arduino en Python's Arduino Master Library: 5 stappe
Ligte intensiteit planne met behulp van Arduino en Python's Arduino Master Library: 5 stappe

Video: Ligte intensiteit planne met behulp van Arduino en Python's Arduino Master Library: 5 stappe

Video: Ligte intensiteit planne met behulp van Arduino en Python's Arduino Master Library: 5 stappe
Video: Web Programming - Computer Science for Business Leaders 2016 2024, November
Anonim
Ligte intensiteit plot met behulp van Arduino en Python se Arduino Master Library
Ligte intensiteit plot met behulp van Arduino en Python se Arduino Master Library

Arduino is 'n ekonomiese, maar tog baie doeltreffende en funksionele hulpmiddel, en om dit in Embedded C te programmeer, maak die proses vervelig! Die Arduino_Master -module van Python vereenvoudig dit en stel ons in staat om berekeninge uit te voer, vulliswaardes te verwyder en 'n grafiek te teken vir 'n visuele voorstelling van data.

As u nog nie van hierdie module weet nie, installeer dit dan met die opdrag pip install Arduino_Master

Moenie bekommerd wees as u nie weet hoe u hierdie module moet gebruik nie; besoek hierdie skakel => Arduino_Master

Die kode vir hierdie projek sal egter altyd in hierdie instruksies beskikbaar wees.

Voorrade

Vir hierdie projek benodig u die volgende:

  1. 'N Arduino
  2. 'N Ligte afhanklike weerstand (LDR) en
  3. Python 3 op u rekenaar geïnstalleer.

Stap 1: Bou u stroombaan:

Bou jou kring
Bou jou kring

Ons sal pin A1 van Arduino gebruik om insetdata te kry. U kan ook die 5V- en GND -penne van Arduino gebruik in plaas van die battery. Maak die verbinding soos volg:

  1. Koppel die een kant van die LDR aan die positiewe aansluiting van 'n 5V -battery of aan die 5V -pen van die Arduino.
  2. Verbind die ander kant van die LDR parallel met pen A1 en die negatiewe aansluiting van die battery of GND -pen van Arduino.
  3. Gebruik 'n weerstand om seker te maak dat al die stroom nie na die GND vloei nie, wat veroorsaak dat u nie 'n sterk genoeg sein kry om by die A1 -aansluiting van die Arduino te voel nie. (Gebruik 'n weerstand van 10k ohm).

Stap 2: Die programmering van u Arduino:

Arduino_Master -module gebruik Serial Monitor van die Arduino om data te stuur en te ontvang. Die voordeel van die gebruik van hierdie module is dat sodra u u Arduino programmeer, u die luislangprogram alleen vir verskillende projekte kan verander, aangesien programmering in python relatief makliker is!

Kode:

// Die veranderlike van LDR_1 word gebruik om pen A1 van Arduino aan te dui.

int LDR_1 = A1;

// Data wat vanaf A1 ontvang word, sal in LDR_Value_1 gestoor word.

vlot LDR_Value_1;

Snaarinvoer;

leemte opstelling ()

{pinMode (LDR_1, INVOER); // LDR_1 is ingestel as 'n INPUT -pen. Serial.begin (9600); // Kommunikasie baudrate is ingestel op 9600.}

leemte lus ()

{as (Serial.available ()> 0) // indien enige insette in die seriële monitor beskikbaar is, gaan dan voort. {input = Serial.readString (); // Lees die invoer as 'n string. if (input == "DATA") {LDR_Value_1 = analogRead (LDR_1) * (5.0 / 1023.0); // (5 /1023) is die omskakelingsfaktor om waarde in volt te kry. Serial.println (LDR_Value_1); // As die invoer gelyk is aan "DATA", lees dan die invoer van LDR_1 en druk dit op die Serial Monitor. } anders int i = 0; // as die invoer nie gelyk is aan "DATA" nie, doen niks! }

}

Stap 3: Python programmeer om data uit Arduino te grafiseer:

Elke LDR sou sy eie weerstandswaardes hê, en ons moet onthou dat elektroniese komponente nie presies identies in werking is nie. Dus moet ons eers die spanning by verskillende intensiteite van die lig bepaal.

Laai die volgende program op na u python IDE en voer dit uit:

Doen dit vir verskillende intensiteite van die lig en maak 'n gevolgtrekking met behulp van die grafiek, byvoorbeeld, as die intensiteit minder as 1 is, is die kamer te donker. Vir intensiteit tussen 1 en 2 is die kamer aansienlik donker. Vir intensiteit groter as 2 word die lig aangeskakel.

# Invoer van Arduino_Master -module

vanaf Arduino_Master invoer *

# data versamel

data = filter (ardata (8, squeeze = False, dynamic = True, msg = "DATA", lines = 30), expect_type = 'num', limit = [0, 5])

Die limiet is op 5 gestel, aangesien ons 'n 5V -battery gebruik.

# Skets die waardes

Grafiek (data, stl = 'dark_background', label = 'Light Intensity')

Stap 4: Finale program om die intensiteit van lig in 'n kamer na te gaan

Nadat u tot die gevolgtrekking gekom het uit die gegewens wat u gekry het, laai die volgende program op en maak seker dat u die perke volgens u gevolgtrekking verander.

# Invoer van Arduino_Master -module

vanaf Arduino_Master invoer # versamel data data = filter (ardata (8, squeeze = False, dynamic = True, msg = "DATA", lines = 50), expected_type = 'num', limit = [0, 5]) #classifying data gebaseer op gevolgtrekking info = vir i in reeks (len (data)): intensiteit = data as intensiteit 1 en intensiteit = 2: info.append ('Light ON') # Plot die grafiek. compGraph (data, inligting, stl = 'dark_background', label1 = 'Light Intensity', label2 = 'State')

Stap 5: Resultaat:

Uitslag
Uitslag

Die program sal 'n minuut of twee neem om uit te voer, aangesien u 50 onmiddellike waardes van Arduino lees.

As u die proses wil bespoedig, verander dan die reëlparameter van die ardata -funksie. Maar onthou dat hoe minder die waarnemings, hoe minder die kwaliteit van die data is.

Opmerking: as die volledige grafiek op die foto hierbo nie sigbaar is nie, verwys die grafiek bo die inleiding.

Aanbeveel: