خاموش و روشن کردن LED توسط یک کلید

این آموزش در ادامه آموزش راه اندازی درایور gpio-sunxi می باشد

در آموزش قبل با راه اندازی درایور GPIO و نوشتن کد در محیط shell که به آن shell script می گویند تونستیم یک پایه را مقدار دهی کنیم. در این آموزش می خواهیم با خواندن از یک کلید یک LED را خاموش و روشن کنیم.

قبلا برای روشن کردن مثلا پایه 12 از دستور زیر استفاده می کردیم.

./on.sh 12

برای اجرای این دستور حتما باید در شاخه ای باشیم که فایل on.sh قرار داره. برای اینکه همیشه به این دستور دسترسی داشته باشیم. این فایل و فایل off.sh را در پوشه /usr/bin ذخیره می کنیم.

cp on.sh off.sh /usr/bin

برای ایجاد دستور خواندن از دستور زیر استفاده می کنیم

این دستور مقدار وروری مورد نظر را می خونه و در فایل input.value ذخیره می کنه.

یک فایل به اسم read.sh بسازید و دستورات زیر را داخلش تایپ کنید.

#!/bin/bash

echo $1 > /sys/class/gpio/export #

GPIO=$(basename /sys/class/gpio/gpio$1_*)

echo Inputing pin $GPIO

echo in > /sys/class/gpio/$GPIO/direction #

echo input save in input.value file

cat  /sys/class/gpio/$GPIO/value > input.value

echo $1 > /sys/class/gpio/unexport #

با دستورات زیر اجازه دسترسی به این فایل می دیم و اون را در پوشه /usr/bin کوپی می کنیم.

chmod u+x read.sh

cp read.sh /usr/bin

برای مثال دستور زیر پایه 11 را می خونه و در فایل input.value  در شاخه جاری ذخیره می کنه.

Read.sh 11

خوب حالا می خواهیم یه برنامه بنویسیم که مقدار پایه 11 متصل به یک کلید را بخونه و مقدار آن را روی LED متصل به پایه 12 متصل کند.

در حالت عادی مقدار ورودی را با یک مقاومت pull-up به ولتاژ 3.3  وصل کنید. پین 11 روی کیوبی پایه 2 U15 است و پین 12 پایه 26 U15 است.

یک فایل جدید با اسمه test.sh بسازید و دستورات زیر را داخلش تایپ کنید.

#!/bin/bash

#read pin2 from cubieboard and set LED on pin 26 if Key press

while [ 1 ]

do

            read.sh 11

            INPUT=$(cat input.value)

            rm input.value

            if [ $INPUT == “1” ]; then

                        off.sh 12

            else

                        on.sh 12

            fi

done

خوب حالا با اجرای دستور زیر کدمون را تست می کنیم.

./test.sh

برای این که از برنامه خارج بشیم از کلید Ctrl+c استفاده کنید.

من این برنامه را روی کیوبی تست کردم. همین برنامه را میشه بدون تغییر برای مارس هم استفاده کرد. فقط باید پایه متناظر را پیدا کرد.

برچسب خورده : , , , , , . Bookmark the پیوند یکتا.

دیدگاهتان را بنویسید