يعرف القراء الكشافة - نظائرهم من روادنا ، ولكن اتضح أن هناك أيضًا أشبال - نظائرنا في أكتوبر. مقبول فيها من سن الخامسة. وقد تم بالفعل اعتماد ابن المؤلف Instructsbles تحت لقب mr_fid ، وسيتعين عليه حضور حدث كبير لسيارات الأجرة والكشافة ، أحدها سيكون مورس. لزيادة اهتمام الطفل ، أعطاه السيد لعبة غير عادية.
يتم تنفيذه في
اردوينو يقوم Nano أيضًا بإخراج 12 كلمة مختلفة إلى الصافرة باستخدام مولد مدمج (قابل للتحويل بواسطة مفتاح ميكانيكي) ومصباح RGB LED. يمكن تعديل الدورة بين 100 و 1100 مللي ثانية. لتبديل الكلمات ، يتم توفير مفتاح العبث. التصميم مدعوم ببطارية ليثيوم بوليمر 1000 مللي أمبير في الساعة. وحدة التحكم في الشحن مدمجة. ولكن هنا ليس بعد:
Mr_fid يشكر سيمون مونك على كتاب Arduino Programming الذي اشتراه قبل عدة سنوات. في رسم الرسم ، اعتمد على أمثلة من هذا الكتاب.
بدء العمل
محلية الصنع، كان المعلم يعرف عن شفرة مورس فقط أن هناك إشارة SOS. كان علي أن أتعلم العتاد وأكتشف أن النقطة هي مقياس واحد ، والشرطة ثلاثة ، والفاصل بين الأحرف في الحرف هو مقياس واحد ، بين الأحرف ثلاثة ، وبين الكلمات سبعة.
عند وضع علامات البلاستيك mr_fid يستخدم شريط اخفاء. وبفضل هذا ، يمكن رؤية أثر العلامة بشكل أفضل إذا كان البلاستيك داكنًا. بالإضافة إلى ذلك ، هذا الشريط اللاصق غير لامع ، ولا ينزلق المثقاب عند "التصويب".
من الضروري أن نقدر مسبقًا مكان أي من مكونات الهيكل ، بحيث يكون كل شيء مناسبًا ، ولا يلامس أحد المكونات العناصر المجاورة ، بما في ذلك الأجزاء البارزة. Mr_fid لم ينس أي شيء سوى ... البطارية. حسنًا ، الحالة واسعة جدًا ، ثم تم العثور على مكان لها. في هذه الأثناء ...
على الرغم من أن السيد لديه تدريبات صغيرة على مقاعد البدلاء ، حتى مع استخدامه لثقب تدريجي للراحة ، إلا أنه أيضًا "عظم متعرج" أو "جزر".
عند تدوير عمود مفتاح المقبض بالمقبض ، يجب أن يظل المفتاح نفسه ثابتًا. لهذا ، بالإضافة إلى العمود ، أمامه دبوس صغير يتطلب ثقبًا إضافيًا على اللوحة الأمامية.
لذلك ، قام mr_fid أولاً بحفر حفرة في العمود ، ثم لصق الشريط اللاصق على الظهر ، ووضع مفتاح المفتاح في مكانه والضغط عليه. ترك الدبوس علامة على شريط الإخفاء ، يبقى لحفر حفرة هناك.
يبدو المخطط دون مراعاة البطارية وجهاز التحكم بالشحن والمحول كما يلي:
على اللوحة الأمامية ، حيث يوجد مفتاح البسكويت والمقاوم المتغير ، قام السيد بتجميع تلك الاستنتاجات من هذه المكونات المتصلة بنفس نقاط الدائرة في الحالة (في هذه الحالة ، السلك الزائد والسلك المشترك). سمح ذلك بسحب أربعة أسلاك فقط بين اللوحة الأمامية والإسكان.
يتم أيضًا تحويل مفتاح الربط إلى نوع من المقاوم المتغير ، فقط خطوة واحدة ، حيث يتم لحام 11 مقاومًا لكل 1 كيلو أوم ، كما هو موضح في الصور. يحدد Arduino موقعه من خلال تغيير الجهد التدريجي ، والذي يكفي إدخالًا تناظريًا واحدًا.
أكبر:
للتحكم في RGB LED ، اختار mr_fid دبابيس Arduino بالأرقام 9 و 10 و 11. هذه مخرجات PWM ، والتي في البرامج الثابتة التالية ستجعل من الممكن الحصول على بتات لكل لون أكثر من ثلاثة.
قام بتوصيل سلك زائد مشترك في قطبية عكسية بمقاوم متغير بحيث يتوافق الحد الأدنى للموضع مع دورة المدة القصوى ، أي السرعة الدنيا.
مثال من كتاب Simon Monk المدرسي بسيط ووظيفة واحدة: فهو يأخذ البيانات الواردة من خلال منفذ تسلسلي ويترجمها إلى شفرة مورس مع دورة 200 مللي ثانية. الوظائف الإضافية التي يضيفها المعالج توفر ضبط الفترة اعتمادًا على الجهد القادم من محرك المقاوم المتغير ، بالإضافة إلى رفض المنفذ التسلسلي لصالح تخزين 12 كلمة ثابتة محددة بواسطة مفتاح الاتصال. كما أضاف إجراءات روتينية للتحكم في زر تبديل وضع RGB-LED ، ومع مكبر صوت مع مولد داخلي ، يمكن للبرنامج التحكم في البداية.
عند برمجة Arduino ، نسيت mr_fid تمامًا أن اللعبة تحتاج إلى التغذية من شيء ما ، لأن اللوحة تعمل بالطاقة من USB طوال هذا الوقت. عندما تذكر ، كان الفكر الأول هو تشغيل كل شيء من "كرونا" من خلال المثبت. لكنها لم تكن مناسبة ، وفي البداية أراد المعلم وضعها في الخارج ، لكنه قرر بعد ذلك استخدام بطارية ليثيوم بوليمر رقيقة بقوة 3.7 فولت و 1000 مللي أمبير في الساعة.
مع بطارية مشحونة حديثًا ، يصل الجهد إلى 4.2 فولت ، وهو ما يكفي لجميع بلورات LED RGB ، بما في ذلك الأزرق. ولكن أثناء تفريغها ، تنخفض ، وعلى الرغم من أن 3.3 فولت يكفي ، يمكن أن ينخفض سطوع الضوء الأزرق بشكل كبير. اضطررت إلى استخدام مثبت تعزيز بخمسة فولت مستقرة عند الإخراج. ومن أجل عدم إزالة البطارية من العلبة عند الشحن ، أضاف المؤلف وحدة تحكم في الشحن ومفتاحًا ثنائي الاتجاه يربط البطارية مع كلا القطبين إما إلى Arduino أو وحدة التحكم هذه. الآن يمكنك شحن اللعبة من USB.
لقد ربط كل هذا معًا بهذه الطريقة ، دون نسيان القطبية ومنع حدوث دائرة قصر:
من خلال تغيير موضع مفتاح البسكويت ، يمكنك تحديد شفرة مورس لمجموعات الحروف التالية: HHH (نقطة واحدة) ، OOO (شرطة واحدة) ، CAT (قطة) ، DOG (كلب) ، ANT (نملة) ، FLY (ذبابة) ، RAT (فأر) ، OWL (بومة) ، PIG (خنزير) ، HEN (دجاج) ، FOX (fox) و EMU (emu). يسمح لك الزر بتبديل أوضاع تشغيل RGB LED على الحلقة: ألوان ثابتة - الأحمر والأزرق والأخضر والأزرق والأخضر والأصفر والتوت والأبيض ، بالإضافة إلى نقطة حمراء وشرطة خضراء ، وتغير اللون بعد كل كلمة ، وتغير اللون بعد كل حرف .
في Arduino ، قام mr_fid بتحميل مثل هذا الرسم:int dotDelay = 200 ؛
int ledPinRed = 11؛ // أحمر
int ledPinBlue = 10 ؛ // أزرق
int ledPinGreen = 9؛ // أخضر
int oldAI = 15 ؛
الباحث بات.
int i = 1 ؛
int j = 0 ؛
تبديل منطقي = خطأ ؛
زر int = 8 ؛
int الجرس = 7 ؛
int flag = 1 ؛
int selectWord ؛
الحيوانات الأليفة = 1 ؛
int potValue = 0 ؛
int maxVoltageBits = 1023 ؛
int مقسمة بت = maxVoltageBits / 22 ؛
كونت وعاء وعاء = A4 ؛
الإدخال int rotaryInput = A5 ؛
شار الفصل ؛
حروف * الحروف [] = {
".-" ، "-..." ، "-.-." ، "- .." ، "." ، "..-." ، "-." ، "...." ، " .. "،
".---" ، "-.-" ، ".- .." ، "-" ، "-." ، "---" ، ".--." ، "--.-" ، ".-." ،
"..." ، "-" ، "..-" ، "...-" ، ".--" ، "-..-" ، "-.--" ، "- .."} ؛
char * أرقام [] = {
"-----" ، ".----" ، "..---" ، "...--" ، "....-" ،
"....." ، "-...." ، "--..." ، "--- .." ، "----."} ؛
char * Animals3 = "hhhooocatdogantflyratowlpighenfoxemu" ؛
إعداد باطل ()
{
pinMode (ledPinBlue ، OUTPUT) ؛
pinMode (ledPinRed ، OUTPUT) ؛
pinMode (ledPinGreen ، OUTPUT) ؛
pinMode (وعاء ، إدخال) ؛
pinMode (مدخلات دوارة ، مدخلات) ؛
pinMode (زر ، إدخال) ؛
pinMode (الجرس ، الإخراج) ؛
الكتابة الرقمية (ledPinRed ، HIGH) ؛
الكتابة الرقمية (ledPinBlue ، HIGH) ؛
الكتابة الرقمية (ledPinGreen ، HIGH) ؛
الكتابة الرقمية (ledPinRed ، LOW) ؛
تأخير (500) ؛
الكتابة الرقمية (ledPinRed ، HIGH) ؛
تأخير (100) ؛
الكتابة الرقمية (ledPinBlue ، LOW) ؛
تأخير (500) ؛
الكتابة الرقمية (ledPinBlue ، HIGH) ؛
تأخير (100) ؛
الكتابة الرقمية (ledPinGreen ، LOW) ؛
تأخير (500) ؛
الكتابة الرقمية (ledPinGreen ، HIGH) ؛
تأخير (100) ؛
الكتابة الرقمية (الجرس ، عالية) ؛
تأخير (100) ؛
الكتابة الرقمية (الجرس ، منخفض) ؛
int buttonValue = قراءة رقمية (زر) ؛
إذا (buttonValue == 1)
{
selectWord = analogRead (rotaryInput) ؛
selectorSwitch1 (selectWord) ؛
}}
آخر
{
العلم = 1 ؛
}}
}}
حلقة فارغة ()
{
wait_for_enter () ؛
selectWord = analogRead (rotaryInput) ؛
selectorSwitch (selectWord) ؛
potValue = القراءة التناظرية (الوعاء) ؛
dotDelay = potValue + 100 ؛
ط = (حيوان * 3) -3 ؛
بينما (j & lt؛ 3)
{
ch = Animals3 [i] ؛
إذا (ch & gt؛ = 'a' && ch & lt؛ = 'z')
{
flashSequence (الحروف [ch - 'a']) ؛
}}
آخر إذا (ch & gt؛ = '0' && ch & lt؛ = '9')
{
flashSequence (الحروف [ch - '0']) ؛
}}
آخر إذا (ch == '')
{
التأخير (dotDelay * 7) ؛
}}
ط = ط + 1 ؛
j = j + 1 ؛
}}
التأخير (dotDelay * 7) ؛
// toggle =! toggle؛ // تبديل لون كل كلمة (غير مطلوب)
j تساوي 0 ؛
}}
wait_for_enter باطل ()
{
int buttonValue = قراءة رقمية (زر) ؛
بينما (buttonValue == 0)
{
buttonValue = قراءة رقمية (زر) ،
}}
}}
الوميض الفارغ (الحرف * التسلسل)
{
int k = 0 ؛
بينما (تسلسل [ك]! = '\ 0')
{
flashDotOrDash (تسلسل [ك]) ؛
ك = ك + 1 ؛
}}
//Serial.print ("") ؛
التأخير (dotDelay * 3) ؛
toggle =! toggle؛ // toggle color beween حروف
}}
فلاش فارغ dotOrDash (char dotOrDash)
{
إذا (dotOrDash == '.')
{
إذا (العلم == 1)
{
الكتابة الرقمية (ledPinRed ، LOW) ؛
الكتابة الرقمية (الجرس ، عالية) ؛
تأخير (dotDelay) ؛
الكتابة الرقمية (الجرس ، منخفض) ؛
الكتابة الرقمية (ledPinRed ، HIGH) ؛
}}
آخر إذا (علم == 2)
{
الكتابة الرقمية (ledPinBlue ، LOW) ؛
الكتابة الرقمية (الجرس ، عالية) ؛
تأخير (dotDelay) ؛
الكتابة الرقمية (الجرس ، منخفض) ؛
الكتابة الرقمية (ledPinBlue ، HIGH) ؛
}}
آخر إذا (علم == 3)
{
الكتابة الرقمية (ledPinGreen ، LOW) ؛
الكتابة الرقمية (الجرس ، عالية) ؛
تأخير (dotDelay) ؛
الكتابة الرقمية (الجرس ، منخفض) ؛
الكتابة الرقمية (ledPinGreen ، HIGH) ؛
}}
آخر إذا (علم == 4)
{
الكتابة الرقمية (ledPinGreen ، LOW) ؛
الكتابة الرقمية (ledPinBlue ، LOW) ؛
الكتابة الرقمية (الجرس ، عالية) ؛
تأخير (dotDelay) ؛
الكتابة الرقمية (الجرس ، منخفض) ؛
الكتابة الرقمية (ledPinGreen ، HIGH) ؛
الكتابة الرقمية (ledPinBlue ، HIGH) ؛
}}
آخر إذا (علم == 5)
{
الكتابة الرقمية (ledPinRed ، LOW) ؛
الكتابة الرقمية (ledPinGreen ، LOW) ؛
الكتابة الرقمية (الجرس ، عالية) ؛
تأخير (dotDelay) ؛
الكتابة الرقمية (الجرس ، منخفض) ؛
الكتابة الرقمية (ledPinRed ، HIGH) ؛
الكتابة الرقمية (ledPinGreen ، HIGH) ؛
}}
آخر إذا (علم == 6)
{
الكتابة الرقمية (ledPinRed ، LOW) ؛
الكتابة الرقمية (ledPinBlue ، LOW) ؛
الكتابة الرقمية (الجرس ، عالية) ؛
تأخير (dotDelay) ؛
الكتابة الرقمية (الجرس ، منخفض) ؛
الكتابة الرقمية (ledPinRed ، HIGH) ؛
الكتابة الرقمية (ledPinBlue ، HIGH) ؛
}}
آخر إذا (علم == 7)
{
الكتابة الرقمية (ledPinRed ، LOW) ؛
الكتابة الرقمية (ledPinBlue ، LOW) ؛
الكتابة الرقمية (ledPinGreen ، LOW) ؛
الكتابة الرقمية (الجرس ، عالية) ؛
تأخير (dotDelay) ؛
الكتابة الرقمية (الجرس ، منخفض) ؛
الكتابة الرقمية (ledPinRed ، HIGH) ؛
الكتابة الرقمية (ledPinBlue ، HIGH) ؛
الكتابة الرقمية (ledPinGreen ، HIGH) ؛
}}
آخر إذا (علم == 8)
{
الكتابة الرقمية (ledPinRed ، LOW) ؛
الكتابة الرقمية (الجرس ، عالية) ؛
تأخير (dotDelay) ؛
الكتابة الرقمية (الجرس ، منخفض) ؛
الكتابة الرقمية (ledPinRed ، HIGH) ؛
}}
آخر إذا (علم == 9)
{
إذا (تبديل! = 0)
{
الكتابة الرقمية (ledPinRed ، LOW) ؛
الكتابة الرقمية (الجرس ، عالية) ؛
تأخير (dotDelay) ؛
الكتابة الرقمية (الجرس ، منخفض) ؛
الكتابة الرقمية (ledPinRed ، HIGH) ؛
}}
آخر
{
الكتابة الرقمية (ledPinBlue ، LOW) ؛
الكتابة الرقمية (الجرس ، عالية) ؛
تأخير (dotDelay) ؛
الكتابة الرقمية (الجرس ، منخفض) ؛
الكتابة الرقمية (ledPinBlue ، HIGH) ؛
}}
}}
}}
آخر
{
إذا (العلم == 1)
{
الكتابة الرقمية (ledPinRed ، LOW) ؛
الكتابة الرقمية (الجرس ، عالية) ؛
التأخير (dotDelay * 3) ؛
الكتابة الرقمية (الجرس ، منخفض) ؛
الكتابة الرقمية (ledPinRed ، HIGH) ؛
}}
آخر إذا (علم == 2)
{
الكتابة الرقمية (ledPinBlue ، LOW) ؛
الكتابة الرقمية (الجرس ، عالية) ؛
التأخير (dotDelay * 3) ؛
الكتابة الرقمية (الجرس ، منخفض) ؛
الكتابة الرقمية (ledPinBlue ، HIGH) ؛
}}
آخر إذا (علم == 3)
{
الكتابة الرقمية (ledPinGreen ، LOW) ؛
الكتابة الرقمية (الجرس ، عالية) ؛
التأخير (dotDelay * 3) ؛
الكتابة الرقمية (الجرس ، منخفض) ؛
الكتابة الرقمية (ledPinGreen ، HIGH) ؛
}}
آخر إذا (علم == 4)
{
الكتابة الرقمية (ledPinGreen ، LOW) ؛
الكتابة الرقمية (ledPinBlue ، LOW) ؛
الكتابة الرقمية (الجرس ، عالية) ؛
التأخير (dotDelay * 3) ؛
الكتابة الرقمية (الجرس ، منخفض) ؛
الكتابة الرقمية (ledPinGreen ، HIGH) ؛
الكتابة الرقمية (ledPinBlue ، HIGH) ؛
}}
آخر إذا (علم == 5)
{
الكتابة الرقمية (ledPinRed ، LOW) ؛
الكتابة الرقمية (ledPinGreen ، LOW) ؛
الكتابة الرقمية (الجرس ، عالية) ؛
التأخير (dotDelay * 3) ؛
الكتابة الرقمية (الجرس ، منخفض) ؛
الكتابة الرقمية (ledPinRed ، HIGH) ؛
الكتابة الرقمية (ledPinGreen ، HIGH) ؛
}}
آخر إذا (علم == 6)
{
الكتابة الرقمية (ledPinRed ، LOW) ؛
الكتابة الرقمية (ledPinBlue ، LOW) ؛
الكتابة الرقمية (الجرس ، عالية) ؛
التأخير (dotDelay * 3) ؛
الكتابة الرقمية (الجرس ، منخفض) ؛
الكتابة الرقمية (ledPinRed ، HIGH) ؛
الكتابة الرقمية (ledPinBlue ، HIGH) ؛
}}
آخر إذا (علم == 7)
{
الكتابة الرقمية (ledPinRed ، LOW) ؛
الكتابة الرقمية (ledPinBlue ، LOW) ؛
الكتابة الرقمية (ledPinGreen ، LOW) ؛
الكتابة الرقمية (الجرس ، عالية) ؛
التأخير (dotDelay * 3) ؛
الكتابة الرقمية (الجرس ، منخفض) ؛
الكتابة الرقمية (ledPinRed ، HIGH) ؛
الكتابة الرقمية (ledPinBlue ، HIGH) ؛
الكتابة الرقمية (ledPinGreen ، HIGH) ؛
}}
آخر إذا (علم == 8)
{
الكتابة الرقمية (ledPinGreen ، LOW) ؛
الكتابة الرقمية (الجرس ، عالية) ؛
التأخير (dotDelay * 3) ؛
الكتابة الرقمية (الجرس ، منخفض) ؛
الكتابة الرقمية (ledPinGreen ، HIGH) ؛
}}
آخر إذا (علم == 9)
{
إذا (تبديل! = 0)
{
الكتابة الرقمية (ledPinRed ، LOW) ؛
الكتابة الرقمية (الجرس ، عالية) ؛
التأخير (dotDelay * 3) ؛
الكتابة الرقمية (الجرس ، منخفض) ؛
الكتابة الرقمية (ledPinRed ، HIGH) ؛
}}
آخر
{
الكتابة الرقمية (ledPinBlue ، LOW) ؛
الكتابة الرقمية (الجرس ، عالية) ؛
التأخير (dotDelay * 3) ؛
الكتابة الرقمية (الجرس ، منخفض) ؛
الكتابة الرقمية (ledPinBlue ، HIGH) ؛
}}
}}
}}
تأخير (dotDelay) ؛ // بين الحروف
// toggle =! toggle؛ // للتبديل بين caractors
}}
محدد الفراغ Switch1 (int AI)
{
if ((AI & gt؛ (oldAI + 10)) || (AI & lt؛ (oldAI - 10))) // لمعرفة ما إذا كانت القيمة قد تغيرت؟
{
إذا كان (AI & gt؛ 11 * مقسمة بتات) // يجب أن يكون 7،8،9،10،11،12.
{
إذا كان (AI & gt؛ 17 * مقسومًا) // يجب أن يكون 10،11،12.
{
إذا كان (AI & GT ؛ 21 * مقسومًا) // يجب أن يكون 12.
{
العلم = 12 ؛
}}
يجب أن يكون // آخر إما 10.11.
{
إذا كان (AI & gt؛ 19 * مقسومًا) // يجب أن يكون 11.
{
العلم = 11 ؛
}}
آخر // يجب أن يكون 10.
{
العلم = 10 ؛
}}
}}
}}
آخر // يجب أن يكون 7،8،9.
{
إذا كان (AI & gt؛ 15 * مقسومًا) // يجب أن يكون 9.
{
العلم = 9 ؛
}}
آخر // يجب أن يكون 7.8.
{
إذا كان (AI & gt؛ 13 * مقسومًا) // يجب أن يكون 8.
{
العلم = 8 ؛
}}
آخر // يجب أن يكون 7.
{
العلم = 7 ؛
}}
}}
}}
}}
آخر // يجب أن يكون 1،2،3،4،5،6.
{
إذا كان (AI & gt؛ 5 * مقسمة بتات) // يجب أن يكون 4،5،6.
{
إذا كان (AI & gt؛ 9 * مقسومًا) // يجب أن يكون 6.
{
العلم = 6 ؛
}}
آخر يجب أن يكون 4،5.
{
إذا كان (AI & gt؛ 7 * مقسومًا) // يجب أن يكون 5
{
العلم = 5 ؛
}}
آخر // يجب أن يكون 4.
{
العلم = 4 ؛
}}
}}
}}
آخر يجب أن يكون 1،2،3.
{
إذا كان (AI & gt؛ 3 * مقسمة بتات) // يجب أن يكون 3.
{
العلم = 3 ؛
}}
آخر يجب أن يكون 1،2.
{
إذا كان (AI & gt؛ splitBits) // يجب أن يكون 2.
{
العلم = 2 ؛
}}
آخر // يجب أن يكون 1.
{
العلم = 1 ؛
}}
}}
}}
}}
}}
oldAI = AI ؛
// مهلة (500) ؛
//Serial.println () ؛
}}
تبديل الفراغ التبديل (int AI)
{
if ((AI & gt؛ (oldAI + 10)) || (AI & lt؛ (oldAI - 10))) // لمعرفة ما إذا كانت القيمة قد تغيرت؟
{
إذا كان (AI & gt؛ 11 * مقسمة بتات) // يجب أن يكون 7،8،9،10،11،12.
{
إذا كان (AI & gt؛ 17 * مقسومًا) // يجب أن يكون 10،11،12.
{
إذا كان (AI & GT ؛ 21 * مقسومًا) // يجب أن يكون 12.
{
حيوان = 12 ؛
}}
يجب أن يكون // آخر إما 10.11.
{
إذا كان (AI & gt؛ 19 * مقسومًا) // يجب أن يكون 11.
{
حيوان = 11 ؛
}}
آخر // يجب أن يكون 10.
{
حيوان = 10 ؛
}}
}}
}}
آخر // يجب أن يكون 7،8،9.
{
إذا كان (AI & gt؛ 15 * مقسومًا) // يجب أن يكون 9.
{
حيوان = 9 ؛
}}
آخر // يجب أن يكون 7.8.
{
إذا كان (AI & gt؛ 13 * مقسومًا) // يجب أن يكون 8.
{
حيوان = 8 ؛
}}
آخر // يجب أن يكون 7.
{
حيوان = 7 ؛
}}
}}
}}
}}
آخر // يجب أن يكون 1،2،3،4،5،6.
{
إذا كان (AI & gt؛ 5 * مقسمة بتات) // يجب أن يكون 4،5،6.
{
إذا كان (AI & gt؛ 9 * مقسومًا) // يجب أن يكون 6.
{
حيوان = 6 ؛
}}
آخر يجب أن يكون 4،5.
{
إذا كان (AI & gt؛ 7 * مقسومًا) // يجب أن يكون 5
{
حيوان = 5 ؛
}}
آخر // يجب أن يكون 4.
{
حيوان = 4 ؛
}}
}}
}}
آخر يجب أن يكون 1،2،3.
{
إذا كان (AI & gt؛ 3 * مقسمة بتات) // يجب أن يكون 3.
{
حيوان = 3 ؛
}}
آخر يجب أن يكون 1،2.
{
إذا كان (AI & gt؛ splitBits) // يجب أن يكون 2.
{
حيوان = 2 ؛
}}
آخر // يجب أن يكون 1.
{
حيوان = 1 ؛
}}
}}
}}
}}
}}
oldAI = AI ؛
// مهلة (500) ؛
//Serial.println () ؛
}}
إذا كررت بعد الماجستير ، الآن بين يديك هي نفس اللعبة التي يمكنك من خلالها إهتمام أطفالك برمز مورس. وعندما يكبرون ، مع تعديل بسيط للبرامج الثابتة ، يمكنك الحصول على أساس "ثعلب" قياسي تلقائي ، ينقل اختيار MOE أو MOI أو MOS أو MOH أو MO5 ، ويتم تشغيله لمدة دقيقة واحدة كل أربع دقائق.
ملاحظة خاصة بالنسبة للأشخاص المملين الذين يجدون خطأ في العناوين: الحيوانات هي اسم جماعي للحيوانات والطيور والحشرات.