Мазмұны:

Жасанды өсімдік эмоциясы экспрессоры (A.P.E.X.): 7 қадам (суреттермен)
Жасанды өсімдік эмоциясы экспрессоры (A.P.E.X.): 7 қадам (суреттермен)

Бейне: Жасанды өсімдік эмоциясы экспрессоры (A.P.E.X.): 7 қадам (суреттермен)

Бейне: Жасанды өсімдік эмоциясы экспрессоры (A.P.E.X.): 7 қадам (суреттермен)
Бейне: 3d презентация жасап, өзгені тамсандыр... 2024, Қараша
Anonim
Image
Image

Бірақ күте тұрыңыз … Тағы бар!

1 -қадам: Кіріспе

Кіріспе
Кіріспе
Кіріспе
Кіріспе
Кіріспе
Кіріспе

APEX дегеніміз не?

APEX - бұл өсімдіктерді бақылайтын ақылды құрылғы. Оны кез келген өсімдікке қосыңыз, сонда ол өсімдіктің «бақыт» деңгейін көрсетеді! Бұл сіздің өсімдіктерді суаруды ұмытып кетуді әдетке айналдырсаңыз, суару үшін керемет еске салғыш.

Бұл қалай жұмыс істейді?

Сиқыр. Жай әзілдедім! APEX зауыттың топырағына енгізілген ылғал сенсорына бекітілген Arduino қолданады. Бұл сенсор топырақтың ылғалдылығын оқиды, содан кейін Arduino қай бетті көрсету керектігін есептейді.

Бірақ неге?

Неге жоқ?

2 -қадам: Бөлшектер мен құралдарды жинау

Бөлшектер мен құралдарды жинау
Бөлшектер мен құралдарды жинау
Бөлшектер мен құралдарды жинау
Бөлшектер мен құралдарды жинау
Бөлшектер мен құралдарды жинау
Бөлшектер мен құралдарды жинау

Оған кірейік! Бұл нұсқаулық үшін сізге бірнеше бөлшектер мен құралдар қажет болады. Бақытымызға орай, олардың барлығы төменде келтірілген:

Микроконтроллерлер байқауының рухында бұл жоба толығымен Amazon -да сатып алынған бөлшектермен жасалды! (демеушілік емес)

Бөлшектер тізімі:

  • Ардуино Уно
  • 8x8 жарықдиодты дисплей
  • Сенсорлық сыйымдылық сенсоры
  • Ылғал сенсоры
  • 9В батарея қосқышы
  • 9В батарея

Құралдар тізімі:

  • 22 өлшеуіш сым
  • Электр таспасы
  • Сым тартқыштар
  • Пісіру темірі
  • Тазартқыш сорғы

Барлық қажетті жабдықты жинағаннан кейін Arduino бағдарламалық жасақтамасын орнатудың уақыты келді!

3 -қадам: Arduino IDE орнату

Arduino IDE орнату
Arduino IDE орнату
Arduino IDE орнату
Arduino IDE орнату
Arduino IDE орнату
Arduino IDE орнату

Бұл жоба жұмыс істеуі үшін бізге Arduino бағдарламалау керек. Бұл компьютерге Arduino Integrated Development Environment (IDE) жүктеуді және орнатуды қажет етеді. Бұл өте қарапайым түсініктеме, бірақ мен сізге процесті көрсетемін:

1. Arduino веб -сайтына кіріңіз

2. Жүктеулер бетіне өтіңіз (Бағдарламалық қамтамасыз ету> Жүктеулер)

3. Операциялық жүйенің жүктеу сілтемесін басыңыз

Ескерту: Бағдарлама Windows, Mac және Linux жүйелерінде жұмыс істейді.

4. Windows жүйесінде орнату

  • Жүктелген файлды іске қосу үшін оны екі рет нұқыңыз
  • Лицензиямен келісу үшін «Келісемін» түймесін басыңыз
  • Қалған нұсқауларды орындаңыз
  • Бағдарламаны қазір орнату керек!

(Егер сіз жоғалсаңыз, скриншоттарды міндетті түрде қараңыз)

5. Mac жүйесінде орнату

  • Жүктелген файлды нұқыңыз
  • «Ашу» таңдаңыз
  • Бағдарлама автоматты түрде орнатылады және іске қосылады!

(Егер сіз шатассаңыз, скриншоттарды міндетті түрде қараңыз)

6. Міне, бұл

Ал сіз аяқтадыңыз! Енді сіздің жүйеңізге Arduino IDE жүктелді!

4 -қадам: Кодекс

Кодекс
Кодекс
Кодекс
Кодекс
Кодекс
Кодекс

Бұл қадамның бәрі кодқа қатысты. Бұл өте қысқа бағдарлама, сондықтан мен сізбен бірге боламын және оның қалай жұмыс істейтінін түсіндіремін. Алдымен қысқаша шолу, содан кейін терең түсініктеме және ақырында оны Arduino-ға қалай итермелеу керек!

Қысқаша шолу

Кодты егжей -тегжейлі түсіндіруге қызығушылық танытпайтындар үшін мен TL; DR сегментін ұсынамын! Міне негізгі түсініктеме. Arduino ылғалдылық сенсорынан бірнеше секунд сайын мәндерді қабылдайды. Бұл ақпарат белгілі бір бетті есептеу және көрсету үшін қолданылады! Сондай -ақ, дисплейді қосуға және өшіруге арналған сыйымдылық батырмасы бар код бар. Өте қарапайым, дұрыс па?

Нитти Гритти

Оқулықтың бұл бөлімі барлық бағдарламаның қалай жұмыс істейтініне қызығушылық танытқандарға арналған. Мен не айтып жатқанымды түсінуге көмектесу үшін жоғарыда скриншоттар беремін, сонымен қатар осы сипаттамаға кодтың кейбір жолдарын енгіземін.

Бұл бағдарлама бес бөлімге бөлінеді:

  1. Оның ішінде кітапханалар және айнымалылар құру
  2. Орнату функциясы
  3. Мимикаға арналған функциялар
  4. Matrix функциясына Arduino жазу
  5. Цикл функциясы

Кітапханалар мен айнымалыларды қосқанда:

Бұл кодтың бірінші бөлімі біз қолданатын айнымалылар мен кітапханалар туралы.

#«LedControlMS.h» қосыңыз

#define TouchSensor 7 LedControl lc = LedControl (12, 11, 10, 1); int sensorPin = A5; int sensorValue = 0; bool басталды = жалған; bool on = ақиқат; логикалық пресс = LOW;

Бірінші жолда LedControlMS деп аталатын кітапхана бар. Бұл кітапхана жарықдиодты дисплейге мәндерді жіберу үшін қажет. Келесі жол - сенсорлық түйреуішті 7 -ге орнататын анықтамалық анықтама. Осыдан кейін бізде LED дисплейінің түйреуіштерін, ылғалдылық сенсорын және оның мәнін анықтайтын тағы үш айнымалысы бар. Соңғы үш жол сенсорлық түйме мен дисплейдің күйін реттейтін логикалық болып табылады. Осыдан кейін бізде байт мәндері бар:

байт күлкісі [4] = {B00000100, B00110010, B01100100, B01100000}; байттық тосын сый [4] = {B00001110, B00001010, B01101110, B10010000}; байт meh [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}; байт эплайн [4] = {B00000010, B00101010, B00100100, B00100000}; байт көзі [4] = {B00000001, B01101001, B01100010, B01100000}; байт этал [4] = {B00000001, B00101001, B01100010, B01100000};

Бұл мәндер APEX барлық беттерін көрсетеді. Әр байт - бұл берілген жолдағы әрбір пиксельдің күйін көрсететін бірнеше биттерді қамтитын массив. «1» және «0» сәйкесінше Қосу/Өшіруді білдіреді.

Орнату функциясы:

Келесі бөлімге көшсек, бізде орнату функциясы бар.

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

pinMode (TouchSensor, INPUT);

// LED Matrix Setup lc.shutdown (0, жалған); lc.setIntensity (0, 4); lc.clearDisplay (0); }

Атау оны өте жақсы түсіндіреді. Бұл жерде сенсорлық сенсор мен дисплейді «орнатамыз». Алғашқы екі жол біздің сериялық шығуды бастайды (жөндеу үшін қолданылады). Үшінші жол сенсорлық түйреуішті кіріске қояды, ал соңғы төрт жол дисплейді қосады.

Мимикаға арналған функциялар:

Бұл, бәлкім, ең ұзын бөлім, бірақ бәрі өте қарапайым және қайталанады.

void broken () {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]); }

void бақытты () {

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]); }

void plain () {

lc.setRow (0, 0, meh [0]); lc.setRow (0, 1, meh [1]); lc.setRow (0, 2, meh [2]); lc.setRow (0, 3, meh [3]); lc.setRow (0, 4, meh [3]); lc.setRow (0, 5, meh [2]); lc.setRow (0, 6, meh [1]); lc.setRow (0, 7, meh [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]); }

void evilsmile () {

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

void 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, эплайн [1]); lc.setRow (0, 2, эплайн [2]); lc.setRow (0, 3, эплайн [3]); lc.setRow (0, 4, eplain [3]); lc.setRow (0, 5, эплайн [2]); lc.setRow (0, 6, эплайн [1]); lc.setRow (0, 7, eplain [0]); }

void evilyell () {

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]); }

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 орнын және байт мәндерін анықтайды, содан кейін мәндерді сол бағанға қолданады. Кейбір функцияларға көбірек жолдар қажет, себебі сол беттің мәндерін көрсету үшін көбірек жолдар қолданылады. Әр бет симметриялы, сондықтан біз сызықтарды қайталаймыз.

WriteArduinoOnMatrix функциясы:

Төртінші бөлім жарықдиодты дисплейде тиісті беттерді есептеу мен жазу үшін қолданылады. Ол судың мәнін тексеретін, содан кейін алдыңғы бөлімдегі әр түрлі функцияларды шақыру арқылы дисплейді орнататын if if операторының бірқатарынан тұрады.

жарамсыз writeArduinoOnMatrix () {if (sensorValue> 0 && sensorValue 30 && sensorValue 100 && sensorValue 200 && sensorValue 400 && sensorValue 650 && sensorValue <= 800) {таң қалды (); } басқа {сынған (); }}

Сенсор жұмыс ауқымынан тыс кетсе, біз «сынған» беттерді қосқанымызды байқай аласыз. Бұл кейбір оғаш нөлдік қателіктердің алдын алады және код ішінде не болып жатқанын жақсы көруге мүмкіндік береді.

Цикл функциясы:

Соңғысы - бұл цикл функциясы. Бұл код өз атауында айтылғандарды орындайды, ол ілмектерге айналады! Бұл функцияда бірнеше жолдар болғанымен, бұл өте қарапайым. Код алдымен түйменің күйін оқиды және дисплейдің «Қосулы» екенін көреді. Егер бұл шындық деп табылса, онда ол WriteArduinoOnMatrix функциясын шақырады, ол APEX -те бетті салады. Бұл функция ілмекті болғандықтан, ол дисплейді біз қалағандай жиі жаңартады. Бұл кідіріс кешіктіру уақытының айнымалысы арқылы анықталады.

void loop () {if (begin == true) {delaytime = 3000; } // Оқу батырмасы басылды = digitalRead (TouchSensor);

егер (басылған) {

if (on == true) {lc.clearDisplay (0); бойынша = жалған; кешігу (кідіріс уақыты); } else {on = true; кешігу (кідіріс уақыты); }} sensorValue = analogRead (sensorPin); кешігу (кідіріс уақыты); if (on == true) {// Draw Faces writeArduinoOnMatrix (); }

басталды = ақиқат;

}

Бұл кодтың бәрі. Енді сіз мұның бәрі қалай жұмыс істейтінін жақсы түсінесіз және осы білімді жобаңызға бейімдеуді бастау үшін қолдана аласыз деп үміттенемін!

Кодты Arduino -ға жіберу

Енді біз барлық кодты қамтыдық, оны Arduino -ға жіберетін уақыт келді! Бақытымызға орай, IDE мұны өте қарапайым етеді. Сізге Arduino -ны компьютерге USB кабелі арқылы қосу жеткілікті, содан кейін IDE -дің жоғарғы сол жағындағы оң жақ көрсеткіні нұқыңыз. Кодты жіберуге рұқсат етіңіз, егер сіз оны дұрыс жасасаңыз, бағдарламаның төменгі жағында сәттілік туралы хабарды көресіз!

5 -қадам: схема

Схема диаграммасы
Схема диаграммасы

Код сияқты, схема тым күрделі емес. Ол тек үш сенсор мен Arduino-дан тұрады, сондықтан мен сізге әрқайсысының түйінін айтамын, егер сізге басқа көмек қажет болса, жоғарыдағы диаграмманы қараңыз.

Жарықдиодты дисплей:

  • VCC -> 5V
  • GRD -> GRD
  • DIN -> 12 түйреуіш
  • CS -> 10 түйреуіш
  • CLK -> Pin 11

Ылғал сенсоры:

  • Оң -> 5В
  • Теріс -> GRD
  • Сигнал -> A5

Сенсорлық сыйымдылық сенсоры:

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

Тым қиын емес, иә? Егер сізде бұл шешуге қатысты қиындықтар туындаса, төмендегі бейнені қараңыз, онда мен оны қалай қосуға болатынын айтамын.

6 -қадам: Барлығын біріктіру

Барлығын біріктіру
Барлығын біріктіру
Барлығын біріктіру
Барлығын біріктіру
Барлығын біріктіру
Барлығын біріктіру

Мәтінге оның қалай сәйкес келетінін түсіндіру қиын, сондықтан мен бұл бөліктің бейнесін міндетті түрде қарауды ұсынар едім. Мен өзімді қалай біріктіргенімді нақты түсіндірмеймін, бұл өте қиын. Бірақ түсініксіз нәрсені түсіндіру үшін мен сымды қосылымдарды дәнекерлеп, тақтаның артына орап қойдым. Содан кейін мен сенсорларды орналастырдым және бәрін біріктіру үшін электр таспасын қолдандым. Ақырында, мен оны 9В батареясымен сынап көрдім, содан кейін оның жұмыс істейтінін білген соң, батареяны артқы жағына қойып, оны таспаға жапсырдым. Бұрын айтқанымдай, осы қадамға арналған бейнені тексеріңіз, ол жақсы дәнекерлеу сегменті бар, ол сымдарды дұрыс орауға көмектеседі. Егер сіз адасып қалсаңыз, оны кідіртуге немесе оны жарты жылдамдықта ойнауға болады.

Құттықтаймын! Егер бәрі сәтті болса, енді сізде толық жұмыс істейтін APEX қондырғысы болуы керек!

Құрылғыны тексеру үшін суарылатын өсімдік тауып, оны электр желісіне қосыңыз! Сіз бұл бақытты немесе таңқаларлық екенін білуіңіз керек, бұл оның жұмыс істейтінін білдіреді !!! Жобаны аяқтау үшін керемет жұмыс!

7 -қадам: Қорытынды

Қорытынды
Қорытынды

Және бұл нұсқаулықтың бәрі! Жобаны тексергеніңізге рахмет! Барлық сұрақтар мен түсініктемелерді төменде қалдырыңыз және Urban Farming Guys -ті қадағалап, осындай керемет оқулықтарды алыңыз! Біз сіздің APEX -тің қалай жасалғанын білгіміз келеді, және суреттер өте жоғары бағаланады! Тоқтағаныңыз үшін тағы да рахмет, күндеріңіз сәтті өтсін!

(Бұл нұсқаулық ескі өсімдіктер эмодзиі жобасынан шабытталған!)

P. S. Бұл нұсқаулық микроконтроллерлер байқауына енгізілген, сондықтан бізге дауыс беруді ұмытпаңыз! Біз оны өте бағалаймыз:)

P. P. S. Make журналында APEX алыңыз! Мұнда дауыс беріңіз! Рахмет:)

Ұсынылған: