Բովանդակություն:

Արհեստական բույսերի զգացմունքների արտահայտիչ (A.P.E.X.). 7 քայլ (նկարներով)
Արհեստական բույսերի զգացմունքների արտահայտիչ (A.P.E.X.). 7 քայլ (նկարներով)

Video: Արհեստական բույսերի զգացմունքների արտահայտիչ (A.P.E.X.). 7 քայլ (նկարներով)

Video: Արհեստական բույսերի զգացմունքների արտահայտիչ (A.P.E.X.). 7 քայլ (նկարներով)
Video: Ռեզոնանս. Լուսավորելով մեր աշխարհի տեղաշարժերն ու լուծումները Էնրիկո Բիսկարոյի հետ 2024, Դեկտեմբեր
Anonim
Image
Image

Բայց սպասիր… Ավելին կա:

Քայլ 1: Ներածություն

Ներածություն
Ներածություն
Ներածություն
Ներածություն
Ներածություն
Ներածություն

Ի՞նչ է APEX- ը:

APEX- ը խելացի (էլ չենք ասում ՝ գեղեցիկ) բույսերի մոնիտորինգի սարք է: Պարզապես միացրեք այն ցանկացած գործարանի, և այն կցուցադրի բույսի «երջանկության» մակարդակը: Սա հիանալի հիշեցում է ձեր բույսերը ջրելու համար, եթե վատ սովորություն ունեք մոռանալ դրանք ջրելը:

Ինչպես է դա աշխատում?

Կախարդական: Պարզապես կատակում եմ! APEX- ն օգտագործում է խոնավության տվիչին ամրացված Arduino- ն, որը տեղադրված է գործարանի հողի մեջ: Այս սենսորը կկարդա հողի խոնավության պարունակությունը, այնուհետև Arduino- ն հաշվարկում է, թե որ դեմքը ցուցադրվի:

Բայց ինչու?

Ինչու ոչ?

Քայլ 2: Մասերի և գործիքների հավաքում

Մասերի և գործիքների հավաքում
Մասերի և գործիքների հավաքում
Մասերի և գործիքների հավաքում
Մասերի և գործիքների հավաքում
Մասերի և գործիքների հավաքում
Մասերի և գործիքների հավաքում

Եկեք մտնենք դրա մեջ: Այս Instructable- ի համար ձեզ հարկավոր կլինեն բավականին մասեր և գործիքներ: Բարեբախտաբար, դրանք բոլորը ստորև թվարկված են.

Միկրոհսկիչների մրցույթի ոգով այս նախագիծը ամբողջությամբ պատրաստվել է Amazon- ում գնված մասերի շնորհիվ: (չի հովանավորվում)

Մասերի ցուցակ

  • Արդուինո Ունո
  • 8x8 LED էկրան
  • Capacitive Touch Sensor
  • Խոնավության ցուցիչ
  • 9 Վ մարտկոցի միակցիչ
  • 9 Վ մարտկոց

Գործիքների ցուցակ

  • 22 չափիչ մետաղալար
  • Էլեկտրական ժապավեն
  • Մետաղալարեր
  • Sոդման երկաթ
  • Desոդման պոմպ

Բոլոր անհրաժեշտ սարքավորումները հավաքելուց հետո ժամանակն է կարգավորել Arduino ծրագիրը:

Քայլ 3: Տեղադրեք Arduino IDE- ն

Arduino IDE- ի տեղադրում
Arduino IDE- ի տեղադրում
Arduino IDE- ի տեղադրում
Arduino IDE- ի տեղադրում
Arduino IDE- ի տեղադրում
Arduino IDE- ի տեղադրում

Որպեսզի այս նախագիծը աշխատի, մենք պետք է կարողանանք ծրագրավորել Arduino- ն: Սա պահանջում է ներբեռնել և տեղադրել Arduino ինտեգրված զարգացման միջավայրը (IDE) ձեր համակարգչում: Դա բավականին պարզ բացատրություն է, բայց ես ձեզ կներկայացնեմ գործընթացի միջոցով.

1. Այցելեք Arduino կայք

2. Գնացեք դեպի Ներլցումների էջ (Softwareրագրակազմ> Ներլցումներ)

3. Կտտացրեք Ներբեռնման հղումը ձեր օպերացիոն համակարգի համար

Կողմնակի նշում. Programրագիրը կաշխատի Windows- ի, Mac- ի և Linux- ի վրա:

4. Windows- ում տեղադրում

  • Կրկնակի կտտացրեք ներբեռնված ֆայլին `այն գործարկելու համար
  • Կտտացրեք «Համաձայնել» ՝ Լիցենզիային համաձայնվելու համար
  • Հետևեք մնացած հուշումներին
  • Այժմ ծրագիրը պետք է տեղադրվի:

(Համոզվեք, որ նայեք սքրինշոթներին, եթե կորչեք)

5. Տեղադրում Mac- ում

  • Կտտացրեք ներբեռնված ֆայլին
  • Ընտրեք «Բաց»
  • Automaticallyրագիրը ինքնաբերաբար կտեղադրվի և կաշխատի:

(Համոզվեք, որ շփոթվելու դեպքում ստուգեք սքրինշոթերը)

6. Դա այն է

Եվ դուք ավարտեցիք: Դուք այժմ ունեք Arduino IDE- ն ներբեռնված ձեր համակարգում:

Քայլ 4: Կոդ

Օրենսգիրքը
Օրենսգիրքը
Օրենսգիրքը
Օրենսգիրքը
Օրենսգիրքը
Օրենսգիրքը

Այս քայլը վերաբերում է ծածկագրին: Դա բավականին կարճ ծրագիր է, այնպես որ ես կանդրադառնամ ձեզ հետ և կբացատրեմ, թե ինչպես է այն աշխատում: Նախ, համառոտ ակնարկ, այնուհետև խորը բացատրություն, և վերջապես, թե ինչպես այն մղել Arduino- ին:

Հակիրճ ակնարկ

Ձեզանից նրանց համար, ովքեր հետաքրքրված չեն ծածկագրի մանրամասն բացատրությամբ, ես տրամադրում եմ TL; DR հատված: Ահա հիմնական բացատրությունը: Arduino- ն խոնավության ցուցիչից արժեքներ է վերցնում ամեն մի վայրկյանը մեկ: Այս տեղեկատվությունը այնուհետև օգտագործվում է որոշակի դեմք հաշվարկելու և ցուցադրելու համար: Վերջում կա նաև մի փոքր կոդ, որը թույլ է տալիս capacitive touch կոճակը միացնել և անջատել էկրանը: Բավականին պարզ է, չէ՞:

The Nitty Gritty

Ձեռնարկի այս հատվածը նրանց համար է, ովքեր շատ հետաքրքրված են, թե ինչպես է աշխատում ամբողջ ծրագիրը ՝ տող առ տող: Ես կտրամադրեմ վերևի սքրինշոթեր, որոնք կօգնեն ձեզ հասկանալ, թե ինչի մասին եմ խոսում, ինչպես նաև այս նկարագրության մեջ ներառել կոդի որոշ տողեր:

Այս ծրագիրը բաժանված է հինգ բաժնի.

  1. Ներառյալ գրադարաններ և փոփոխականների ստեղծում
  2. Կարգավորման գործառույթը
  3. Դեմքի արտահայտությունների գործառույթներ
  4. Գրեք Arduino- ն մատրիցային գործառույթի վրա
  5. Օղակի գործառույթը

Ներառյալ գրադարաններ և փոփոխականների ստեղծում

Այս ծածկագրի առաջին բաժինը վերաբերում է այն փոփոխականներին և գրադարաններին, որոնք մենք կօգտագործենք:

#ներառել «LedControlMS.h»

#սահմանել TouchSensor 7 LedControl lc = LedControl (12, 11, 10, 1); int sensorPin = A5; int sensorValue = 0; բոլը սկսվեց = կեղծ; bool on = true; բուլյան սեղմված = OWԱOWՐ;

Առաջին տողը ներառում է LedControlMS անունով գրադարան: Այս գրադարանից պահանջվում է, որ կարողանա արժեքներ ուղարկել LED էկրանին: Հաջորդ տողը սահմանման հայտարարություն է, որը հպման տվիչի քորոցը սահմանում է 7. Դրանից հետո մենք ունենք ևս երեք փոփոխական, որոնք սահմանում են LED էկրանին, խոնավության տվիչին և դրա արժեքը: Վերջին երեք տողերը բուլյան են, որոնք կարգավորում են հպման կոճակի և ցուցադրման վիճակը: Դրանից հետո մենք ունենք մեր բայթ արժեքները.

բայթ ժպիտ [4] = {B00000100, B00110010, B01100100, B01100000}; բայթ անակնկալ [4] = {B00001110, B00001010, B01101110, B10010000}; բայթ մե [4] = {B00000100, B00100100, B00100100, B00100000}; բայթ տխուր [4] = {B00000010, B01100100, B00110010, B00110000}; բայթ մահացած [6] = {B00001010, B00100100, B00101010, B00100000, B01100000, B01101010}; բայթ սխալ [8] = {B00111100, B01000010, B10100001, B10010001, B10001001, B10000101, B01000010, B00111100}; // Evil Faces բայթ esmile [4] = {B00000010, B00101010, B01000100, B01000000}; բայթ elaugh [4] = {B00000010, B00101010, B01100100, B01100000}; բայթ eplain [4] = {B00000010, B00101010, B00100100, B00100000}; բայթ eyell [4] = {B00000001, B01101001, B01100010, B01100000}; բայթ etalk [4] = {B00000001, B00101001, B01100010, B01100000};

Այս արժեքները ներկայացնում են APEX- ի բոլոր դեմքերը: Յուրաքանչյուր բայթ մի զանգված է, որը պարունակում է բազմաթիվ բիթեր, որոնք թելադրում են տվյալ տողի յուրաքանչյուր պիքսելի վիճակը: «1» և «0» համապատասխանաբար ներկայացնում են միացում/անջատում:

Կարգավորման գործառույթը

Անցնելով հաջորդ բաժին ՝ մենք ունենք մեր տեղադրման գործառույթը:

void setup () {// MS Serial Output Serial.begin (9600);

pinMode (TouchSensor, INPUT);

// LED Matrix Setup lc. անջատում (0, կեղծ); lc.setIntensity (0, 4); lc.clearDisplay (0); }

Անունը դա շատ լավ բացատրում է: Սա այն վայրն է, որտեղ մենք «կարգավորում» ենք մեր հպման ցուցիչը և էկրանը: Առաջին երկու տողերը սկսում են մեր սերիական ելքը (օգտագործվում է վրիպազերծման համար): Երրորդ տողը հպման տվիչի քորոցը դնում է մուտքի վրա, իսկ վերջին չորս տողերը սկսում են ցուցադրումը:

Դեմքի արտահայտությունների գործառույթներ

Սա, ամենայն հավանականությամբ, ամենաերկար բաժինն է, բայց ամեն ինչ շատ պարզ է և կրկնվող:

դատարկություն կոտրված () {lc.setRow (0, 0, սխալ [0]); lc.setRow (0, 1, սխալ [1]); lc.setRow (0, 2, սխալ [2]); lc.setRow (0, 3, սխալ [3]); lc.setRow (0, 4, սխալ [4]); lc.setRow (0, 5, սխալ [5]); lc.setRow (0, 6, սխալ [6]); lc.setRow (0, 7, սխալ [7]); }

երջանիկ դատարկ () {

lc.setRow (0, 0, ժպտացեք [0]); lc.setRow (0, 1, ժպտացեք [1]); lc.setRow (0, 2, ժպտացեք [2]); lc.setRow (0, 3, ժպտացեք [3]); lc.setRow (0, 4, ժպտացեք [3]); lc.setRow (0, 5, ժպտացեք [2]); lc.setRow (0, 6, ժպտացեք [1]); lc.setRow (0, 7, ժպտացեք [0]); }

դատարկ պարզ () {

lc.setRow (0, 0, մեհ [0]); lc.setRow (0, 1, մեհ [1]); lc.setRow (0, 2, մեհ [2]); lc.setRow (0, 3, մեհ [3]); lc.setRow (0, 4, մեհ [3]); lc.setRow (0, 5, մեհ [2]); lc.setRow (0, 6, մեհ [1]); lc.setRow (0, 7, մեհ [0]); }

դատարկ զարմացած () {

lc.setRow (0, 0, անակնկալ [0]); lc.setRow (0, 1, անակնկալ [1]); lc.setRow (0, 2, անակնկալ [2]); lc.setRow (0, 3, անակնկալ [3]); lc.setRow (0, 4, անակնկալ [3]); lc.setRow (0, 5, անակնկալ [2]); lc.setRow (0, 6, անակնկալ [1]); lc.setRow (0, 7, անակնկալ [0]); }

դատարկ մեռնել () {

lc.setRow (0, 0, մահացած [0]); lc.setRow (0, 1, մահացած [1]); lc.setRow (0, 2, մահացած [2]); lc.setRow (0, 3, մահացած [3]); lc.setRow (0, 4, մահացած [4]); lc.setRow (0, 5, մահացած [5]); lc.setRow (0, 6, մահացած [1]); lc.setRow (0, 7, մահացած [0]); }

դատարկ լաց () {

lc.setRow (0, 0, տխուր [0]); lc.setRow (0, 1, տխուր [1]); lc.setRow (0, 2, տխուր [2]); lc.setRow (0, 3, տխուր [3]); lc.setRow (0, 4, տխուր [3]); lc.setRow (0, 5, տխուր [2]); lc.setRow (0, 6, տխուր [1]); lc.setRow (0, 7, տխուր [0]); }

դատարկ չարիք () {

lc.setRow (0, 0, զմայլանք [0]); lc.setRow (0, 1, զմայլիկ [1]); lc.setRow (0, 2, զմայլիկ [2]); lc.setRow (0, 3, զմայլիկ [3]); lc.setRow (0, 4, զմայլիկ [3]); lc.setRow (0, 5, զմայլիկ [2]); lc.setRow (0, 6, զմայլիկ [1]); lc.setRow (0, 7, զմայլիկ [0]); }

դատարկ evillaugh () {

lc.setRow (0, 0, elaugh [0]); lc.setRow (0, 1, elaugh [1]); lc.setRow (0, 2, elaugh [2]); lc.setRow (0, 3, elaugh [3]); lc.setRow (0, 4, elaugh [3]); lc.setRow (0, 5, elaugh [2]); lc.setRow (0, 6, elaugh [1]); lc.setRow (0, 7, elaugh [0]); }

void evilplain () {

lc.setRow (0, 0, eplain [0]); lc.setRow (0, 1, eplain [1]); lc.setRow (0, 2, eplain [2]); lc.setRow (0, 3, eplain [3]); lc.setRow (0, 4, eplain [3]); lc.setRow (0, 5, eplain [2]); lc.setRow (0, 6, eplain [1]); lc.setRow (0, 7, eplain [0]); }

դատարկ evilyell () {

lc.setRow (0, 0, աչքեր [0]); lc.setRow (0, 1, աչք [1]); lc.setRow (0, 2, աչք [2]); lc.setRow (0, 3, eyell [3]); lc.setRow (0, 4, eyell [3]); lc.setRow (0, 5, eyell [2]); lc.setRow (0, 6, eyell [1]); lc.setRow (0, 7, eyell [0]); }

void eviltalk () {

lc.setRow (0, 0, etalk [0]); lc.setRow (0, 1, etalk [1]); lc.setRow (0, 2, etalk [2]); lc.setRow (0, 3, etalk [3]); lc.setRow (0, 4, etalk [3]); lc.setRow (0, 5, etalk [2]); lc.setRow (0, 6, etalk [1]); lc.setRow (0, 7, etalk [0]); }

Այս գործառույթներն օգտագործվում են դեմքի յուրաքանչյուր արտահայտություն սահմանելու համար `օգտագործելով մեր առաջին բայթի բայթ արժեքները: Յուրաքանչյուր տող սահմանում է x դիրքի և բայտի արժեքներ, այնուհետև արժեքները կիրառում է այդ սյունակում: Որոշ գործառույթներ պահանջում են ավելի շատ տողեր, քանի որ ավելի շատ տողեր են օգտագործվում այդ դեմքի արժեքները ցուցադրելու համար: Յուրաքանչյուր երես սիմետրիկ է, դրա համար էլ մենք կրկնում ենք տողերը:

The WriteArduinoOnMatrix գործառույթը

Չորրորդ բաժինը օգտագործվում է LED էկրանին համապատասխան դեմքերը հաշվարկելու և գրելու համար: Այն բաղկացած է մի շարք այլ if հայտարարություններից, որոնք ստուգում են ջրի արժեքները, այնուհետև ցուցադրում է ցուցադրումը ՝ նախորդ բաժնից տարբեր գործառույթներ կանչելով:

void writeArduinoOnMatrix () {if (sensorValue> 0 && sensorValue 30 && sensorValue 100 && sensorValue 200 && sensorValue 400 && sensorValue 650 && sensorValue <= 800) {զարմացած (); } else {կոտրված (); }}

Դուք կարող եք նկատել, որ մենք ավելացրել ենք «կոտրված» դեմքեր այն դեպքում, երբ սենսորը դուրս է գալիս աշխատանքային տիրույթներից: Սա կանխում է որոշ տարօրինակ զրո սխալներ, որոնք տեղի են ունենում և մեզ ավելի լավ տեսողական պատկերացում է տալիս, թե ինչ է կատարվում ծածկագրում:

Օղակի գործառույթը

Վերջին, բայց ամենակարևորը, օղակի գործառույթն է: Այս կոդը անում է հենց այն, ինչ ասում է իր անունը, այն օղակ է: Չնայած այս գործառույթում կան բավականին շատ տողեր, այն իրականում բավականին պարզ է: Կոդը սկզբում կարդում է կոճակի վիճակը և տեսնում, արդյոք էկրանը «Միացված» է: Եթե դա ճիշտ է համարում, ապա այն կկանչի WriteArduinoOnMatrix գործառույթը, որն այնուհետև դեմք կքաշի APEX- ում: Քանի որ այս գործառույթը հանգչում է, այն կթարմացնի էկրանը այնքան հաճախ, որքան ցանկանում ենք: Այս ուշացումը թելադրված է ուշացման փոփոխականով:

void loop () {if (start == true) {delaytime = 3000; } // Կարդալու կոճակը սեղմված է = digitalRead (TouchSensor);

եթե (սեղմված) {

եթե (միացված է == ճշմարիտ) {lc.clearDisplay (0); on = կեղծ; ուշացում (ուշացում); } else {on = true; ուշացում (ուշացում); }} sensorValue = analogRead (sensorPin); ուշացում (ուշացում); if (on == true) {// Draw Faces writeArduinoOnMatrix (); }

սկսված = ճշմարիտ;

}

Այսքանը կա օրենսգրքում: Հուսով եմ, հիմա դուք ավելի լավ եք հասկանում, թե ինչպես է ամեն ինչ աշխատում, և կարող եք օգտագործել այս գիտելիքը ՝ այն ձեր նախագծին հարմարեցնելու համար:

Կոդը հրելով Arduino- ին

Այժմ, երբ մենք ծածկել ենք ամբողջ ծածկագիրը, ժամանակն է այն մղել դեպի Arduino: Բարեբախտաբար, IDE- ն դա շատ պարզ է դարձնում: Մնում է ձեր Arduino- ն ձեր համակարգչին միացնել USB մալուխով, այնուհետև պարզապես սեղմել IDE- ի վերևի ձախ ձախ սլաքը: Թող կոդն առաջ մղվի, և դուք պետք է հաջողության ուղերձ տեսնեք ծրագրի ներքևում, եթե դա ճիշտ եք արել:

Քայլ 5: Շղթայի դիագրամ

Շղթայի դիագրամ
Շղթայի դիագրամ

Կոդի նման, սխեմայի սխեման այնքան էլ բարդ չէ: Այն բաղկացած է ընդամենը երեք սենսորից և Arduino- ից, ուստի ես ձեզ կասեմ յուրաքանչյուրի համար նախատեսված եզրերը, և եթե որևէ այլ օգնության կարիք ունեք, պարզապես հղեք վերևի գծապատկերին:

LED էկրան

  • VCC -> 5V
  • GRD -> GRD
  • DIN -> PIN 12
  • CS -> Pin 10
  • CLK -> PIN 11

Խոնավության ցուցիչ

  • Դրական -> 5 Վ
  • Բացասական -> GRD
  • Ազդանշան -> A5

Capacitive Touch Sensor:

  • VCC -> 5V
  • GRD -> GRD
  • SIG -> 7

Շատ դժվար չէ, այնպես չէ՞: Եթե որևէ խնդիր ունեք այս անջատման հետ, համոզվեք, որ հղում կատարեք ստորև բերված տեսանյութին, որտեղ ես ձեզ կպատմեմ, թե ինչպես այն միացնել:

Քայլ 6: Ամեն ինչ միասին դնել

Այդ ամենը միասին դնելը
Այդ ամենը միասին դնելը
Այդ ամենը միասին դնելը
Այդ ամենը միասին դնելը
Այդ ամենը միասին դնելը
Այդ ամենը միասին դնելը

Դժվար է տեքստով բացատրել, թե ինչպես է այն համընկնում բոլորի հետ, այնպես որ ես անպայման կառաջարկեի դիտել այս մասի տեսանյութը: Ես իրականում չեմ բացատրի, թե ինչպես եմ իմը համատեղում, դա չափազանց դժվար է: Բայց ինչ -որ բան անորոշ բացատրելու համար ես կպցրի մետաղալարերի միացումները և դրանք փաթաթեցի տախտակի հետևի մասում: Հետո ես տեղադրեցի սենսորները և օգտագործեցի էլեկտրական ժապավեն ՝ այդ ամենը միասին պահելու համար: Ի վերջո, ես այն փորձարկեցի 9 Վ մարտկոցով, իսկ հետո, երբ իմացա, որ այն աշխատում է, մարտկոցը դրեցի հետևի մասում և այն նույնպես կպցրեցի: Ինչպես նախկինում ասացի, ԱՅՍ ՔԱՅԼԻ ՀԱՄԱՐ ԴԻՄԵՔ ՏԵՍԱՆՅՈԹԸ, այն ունի մի փոքր զոդման մի հատված, որը արագացված է և կօգնի ձեզ ճիշտ փաթաթել լարերը: Ազատորեն դադարեցրեք այն կամ կես արագությամբ խաղացեք, եթե կորչեք:

Շնորհավորում եմ: Եթե ամեն ինչ հաջողությամբ ընթացավ, ապա այժմ պետք է ունենաք լիովին ֆունկցիոնալ APEX միավոր:

Ձեր միավորը փորձարկելու համար գտեք ջրված բույս և միացրեք այն: Դուք պետք է պարզեք, որ այն կամ ուրախ է, կամ զարմացած, և դա նշանակում է, որ այն պետք է աշխատի !!! Հիանալի աշխատանք նախագիծն ավարտելու համար:

Քայլ 7: Եզրակացություն

Եզրակացություն
Եզրակացություն

Եվ դա ամբողջ Ուսուցիչն է: Շնորհակալություն նախագիծը դիտելու համար: Թողեք որևէ հարց և մեկնաբանություն ներքևում և համոզվեք, որ հետևեք Urban Farming Guys- ին ՝ նման ավելի հիանալի ձեռնարկների համար: Մենք կցանկանայինք լսել, թե ինչպես է ընթացել ձեր APEX կառուցվածքը, և նկարները շատ են գնահատվում: Կրկին շնորհակալություն այցելության համար, հիանալի օր:

(Այս Instructable- ը ոգեշնչված էր ավելի հին նախագծով ՝ Plant Emoji!)

Պ. Ս. Այս Instructable- ը մասնակցում է Microcontrollers մրցույթին, այնպես որ մի մոռացեք քվեարկել մեր օգտին: Մենք շատ ենք գնահատում:)

P. P. S. Եկեք ձեռք բերենք APEX- ը Make Magazine- ում: Քվեարկե՛ք այստեղ: Շնորհակալություն:)

Խորհուրդ ենք տալիս: