সুতরাং, আমি প্রোগ্রামিং এ সম্পূর্ণ এবং নূতন। আমি আরডুইনোসে কিছু প্রাথমিক জিনিস করেছি (আক্ষরিকভাবে এলইডি টগল করা এবং একটি এলসিডির উপর কিছু প্রদর্শন করা) এবং আমি নিজে সি-তে প্রোগ্রাম কীভাবে শেখানোর চেষ্টা করছি আমি বাণিজ্য দ্বারা একটি হার্ডওয়্যার ইঞ্জিনিয়ার, তবে এটি আমাকে বিরক্ত করে যে আমি পারছি না ফার্মওয়্যার / সফ্টওয়্যার দিকের যে কোনও একটি করুন এবং এটি শেখানোর জন্য কোনও সন্ধ্যা কোর্স নেই এবং আমি আমার ক্যারিয়ারের বিকল্পগুলি এগিয়ে নিতে চাই। আমি বুঝতে চেষ্টা করছি যে এই কয়েকটি কমান্ড কীভাবে একসাথে চলে যায় এবং এমন একটি বিষয় নিয়ে চলে এসেছি যে এটি কেন কাজ করছে না আমি কেবল তার মাথা পেতে পারি না।
সুতরাং, আমি একটি ইনপুট এবং একটি আউটপুট আছে। আমার আউটপুটটি একটি FET এর গেটটি টগল করছে যা একটি LED চালু করে। ইনপুটটি একটি এন্ড গেট থেকে আসছে। সুতরাং, আমার এলইডি সর্বদা চালু থাকে, এবং আমি যখন এআরএন গেট থেকে একটি ইনপুট সিগন্যাল পাই (2 শর্ত পূরণ করা হয়েছে) আমি আউটপুট (এলইডি টগল) কম যেতে চাই (এলইডি বন্ধ করুন। আউটপুটটিও এর সাথে সংযুক্ত থাকায় অ্যান্ড ইনপুটগুলির মধ্যে একটি, এটি নীচে ইনপুট সিগন্যালটিকেও ঘুরিয়ে দেবে।
আমি কী করতে চাই: আমি কেবল ইনপুটটি 'শর্ত পূরণ' হিসাবে পড়তে এবং LED বন্ধ করতে চাই। এটি তখন 1 সেকেন্ডের জন্য বন্ধ রাখতে হবে এবং এটি আবার চালু হবে। যদি ইনপুট আবার উচ্চে চলে যায়, প্রক্রিয়াটি পুনরাবৃত্তি করে। আমি অন্যান্য ও গেটের ইনপুট হিসাবে স্যুইচ করতে একটি সাধারণ ধাক্কা ব্যবহার করছি এবং মাপ করেছি যে বোতামটি টিপলে আউটপুট (এমসিইউ ইনপুট) বেশি যায়, তবুও এলইডি টগল (আউটপুট) বন্ধ হবে না। আমার কোডটি (আমার মনে হয়) বেশ জঘন্য সরল, তবে স্পষ্টত আমি ঠিক কিছু বুঝতে পারি না কারণ এটি ঠিক কাজ করছে না।
সুতরাং আমি এই কোডটি ব্যবহার করছি:
#include "mbed.h"
DigitalIn ip(D7);
DigitalOut op(D8);
int main() {
if (ip == 1){
op = 0;
wait (1.0);
op = 1;
}else{
op = 1;
}
}
এবং আমার কাছে এটি যৌক্তিক বলে মনে হয়। স্বাভাবিক অবস্থায়, আউটপুটটি উচ্চ হয়। যদি ইনপুটটি অ্যান্ড গেট থেকে সংকেত পায় তবে এলইডি 1 সেকেন্ডের জন্য বন্ধ হয়ে যাবে, তারপরে আবার চালু করুন।
এটি কীভাবে যুক্তিযুক্ত উপায় বলে মনে হচ্ছে আমি এটি ভুল করেছি এবং আমি বুঝতে পারি না কেন এটি কাজ করে না?
যদি এটি সহায়তা করে তবে আমি নিউক্লিও F103RB ব্যবহার করছি। আমি যখন 'পলক' কোডটি ব্যবহার করি এবং ঠিক তার মতোই এলইডি চালু এবং বন্ধ করি তখন এটি ঠিক কাজ করে, আমি যখন "যদি" বিবৃতিটি ভুল করি তখন ঠিক যুক্ত হয়।
এটি সরলিকৃত সার্কিট:
এই সার্কিটটি অনুকরণ করুন - সার্কিটল্যাব ব্যবহার করে স্কিম্যাটিক তৈরি করা হয়েছে
পিএস আমি জানি যে আমি সেগুলি স্কিমেটিকতে যুক্ত করিনি, তবে এবং গেটগুলির ইনপুট এবং আউটপুটটিতে পুলডাউন প্রতিরোধক রয়েছে।
DigitalIn
ইতিমধ্যে অন্তর্ভুক্ত রয়েছে volatile
।