الإيقاع على اردوينو


أحيي الجميع بشكل محموم!

من وقت لآخر أقوم بدواسة نشطة في الحدائق المحلية. وبعد ذلك بزغت ، ربما ، لم أقم بإنهائها بشكل صحيح. بدأت بدراسة القضية. تدعي Cyclopedia أن متوسط الإيقاع يجب أن يكون بين 80 و 110 دورة في الدقيقة. حسنا. لذا فأنت بحاجة إلى كمبيوتر بالدراجة مزود بجهاز استشعار. الصين لا تريد أن تأخذ. Naryl Sigma 16.12 STS + الإيقاع لـ 2900 روبل. الأسعار ليست رخيصة، ولكن في kryzys ساحة وأنا، إذا جاز التعبير، B- العاطلين عن العمل) I ترد عليها، وقررت ... في الواقع، لعبت دور الكمبيوتر الدراجة بالنسبة لي حفنة من فون، السيكلومتر أداة لقياس أقواس الدوائر البرامج و كاسيو STB-1000 ساعات- وهذه المجموعة جيدة معي. وشهادة الإيقاع مطلوبة فقط لبعض الوقت. ثم يتم استخدام الجسم ومراقبته باستمرار لا معنى له. في كلمة واحدة ، جاء الفهم أننا بحاجة إلى جمع حماقة مؤقتة من القرف والعصي من اردوينو والأسهم.

فكرة: نضع مصباحين LED على عجلة القيادة - أخضر وأحمر. الإيقاع الأخضر أمر طبيعي. الأحمر ، على التوالي ، لا. ثم توصل إلى فكرة أن الأحمر سوف يحترق فقط عندما تكون السرعة فوق المعدل الطبيعي. لذلك سوف تأكل البطاريات أقل.

التنفيذ:
- على "ريشة" مفتاح القصب من متجر راديو قريب ، على "قضيب التوصيل" مغناطيس نيوديميوم
- سأدفع مصابيح LED في الظرف الصيني
- ستلعب وحدة التحكم دور Arduino Pro Mini 3.3V 8MHz

لقد قمت بتجميع كل شيء على لوحة توصيل مع UNO (من الأسهل خياطة وخيط ) بدلا من مفتاح القصب ، زر الساعة.


وحمل الرسم مع إخراج البيانات إلى المنفذ.
رسم تخطيطي:
int cadInt = 0;  //    0=pin2
int ledGreen = 10;  //   
int ledRed = 11;  //   

int count = 0;  //  
int lastCount;  //      
int count4period;  //     

//           :
long time;  //       
long lastTime;  //      
int period;  //   

void setup() {
  pinMode (cadInt, INPUT);  //   ()  
  pinMode (ledGreen, OUTPUT);  //    
  pinMode (ledRed, OUTPUT);  //  
  
  attachInterrupt(cadInt, swap, RISING);
  
  lastTime = millis();  //     
  
  Serial.begin(9600);  //     
}

void swap() {
  count = count+1;
}

void loop() {
  delay(5000);
  
  count4period = count - lastCount;
  
  time = millis();  //      
  period = time - lastTime;  //      
 
  Serial.println(period);  //     
  Serial.println(count4period);  //     
  
  if (count4period >= 6 && count4period <= 9)
  {
    Serial.println ("Green");  //     
    digitalWrite(ledGreen, HIGH);
    digitalWrite(ledRed, LOW);
    } else {
        if(count4period > 9){
        Serial.println ("Red");  //     
        digitalWrite(ledGreen, LOW);
        digitalWrite(ledRed, HIGH);
        } else {
          Serial.println ("LOW CADENCE");  //     
          digitalWrite(ledGreen, LOW);
          digitalWrite(ledRed, LOW);
        }
     }
      
  lastTime = time;  //     
  lastCount = count;  
}


كل شيء على ما يرام. كل شيء يعمل.


ثم أعاد تجميع كل هذا على لوح خبز وتمسك المنك.


بالمناسبة ، هذا هو الرسم البياني:

لدي ثلاث بطاريات فقط ، لأن بطاريتين ستكون قليلة ، ولا يعرض فريتز ثلاث بطاريات.

وهذا ما يبدو عليه حجم الدراجة الصينية:


في التحليل وعملية اللحام:

اضطررت إلى لحام ضوء واحد فقط ، لأن الثاني الشفاف هو في الواقع أحمر.

إليك ما كان يبدو عليه في نهاية العملية:

في عملية التفكير خلال المشروع ، كان يُعتقد أنه بدلاً من LEDs الخضراء والحمراء ، يمكن توصيل اثنين من RGB ، لكنهما لم يكونا في أقرب متجر كهربائي ، لأن لدينا.

حسنا، أنا وضعت المفتاح في القصب في بعض أنبوب من البلاستيك ومختومة ذلك مع مسدس الغراء.


وهكذا ، ماذا عن التكاليف ... كان علي أن أنفق فقط على مفتاح القصب (15 روبل) ، وثلاث بطاريات AA (86 روبل) ومغناطيس نيوديميوم (اشتريتهم stsuko لأنني كنت أبحث عن استنزاف ، لكنني لم أكن مستعدًا للانتظار مع علي (160 روبل)). وكان الباقي كله في صناديق في انتظار التطبيق. هنا حتى سلك رئيسي من ماوس Coolermaster ميت مطبق:


لا يزال هناك عدد قليل من الناس ...







انتباه! سأكون سعيدا لرؤية رغيف مع قرون في التعليقات ؛) ولكن على محمل الجد. في الواقع ، كان من الممكن استخدام Atmega8 L بهدوء بدلاً من أردوينو كامل والتخلي عن قطعين للأضواء والتحكم بها باستخدام PWM. ولكن ، في zashashnik ، لدي المعتاد فقط ولا يوجد حامل للبطارية 18650 لتشغيل هذا العمل. ربما في وقت لاحق ......

الرسم النهائي. (لا تضرب "المبرمج" الذي يكتبه قدر استطاعته):
الإيقاع_1.0
int cadInt = 0;  //    0=pin2
int ledGreen = 10;  //   
int ledRed = 11;  //   

int count = 0;  //  
int lastCount = 0;  //      
int count4period = 0;  //     

void setup() {
  pinMode (cadInt, INPUT);  //   ()  
  pinMode (ledGreen, OUTPUT);  //    
  pinMode (ledRed, OUTPUT);  //  
  
  attachInterrupt(cadInt, swap, RISING);
}

void swap() {
  count = count+1;
}

void loop() {
  delay(5000);
  
  count4period = count - lastCount;
  
  if (count4period >= 6 && count4period <= 9) {
    digitalWrite(ledGreen, HIGH);
    digitalWrite(ledRed, LOW);
    } else {
        if(count4period > 9){
        digitalWrite(ledGreen, LOW);
        digitalWrite(ledRed, HIGH);
        } else {
          digitalWrite(ledGreen, LOW);
          digitalWrite(ledRed, LOW);
        }
    }
      
  lastCount = count;  
}



صور في الموقع:




... وإلى أقصى حد


للحصول على فيديو وجبة خفيفة:


ملاحظة: لا يمكن إعادة طبع مقال دون طلب من نوع ©. يمكن تحسين المشروع وإعادة صياغته. كل أسبوع عمل مثمر! وأنا أركب دراجة!

قامت PPS اليوم بإجراء اختبار. الاستنتاجات:
- كل شيء يعمل بشكل جيد. وقد لوحظ الفشل مرة واحدة فقط. على ما يبدو ، تراجعت الثرثرة.
- من الجدير استخدام RGB LEDs - في ضوء الشمس الساطع سيكون أكثر وضوحًا.

All Articles