কোডটিতে একটি আরডুইনো ইউনো রিসেট করুন


19

কোড (যেমন স্কেচ থেকেই) থেকে কোনও আরডুইনো (যেমন এটি পুনরায় বুট করা) পুনরায় সেট করা সম্ভব? আমি জানি যে একটি বিশেষ সার্কিট দিয়ে এটি সম্ভব তবে কেবল কোড দিয়ে এটিকে তৈরি করার কোনও সুযোগ আছে কি?

নীচে আমার কোড এবং মন্তব্যটি //resetযেখানে আমি পুনরায় রিসেট করতে চাই।

#include <TrueRandom.h>

int i;
int randSeed;
long randNumber;

void setup(){
  Serial.begin(9600);
  Serial.println("20 pseudo Zufallszahlen:");
  for (i=1;i<=20;i++) Serial.print(random(10));
  Serial.println();
  Serial.println();
  //randomSeed(TrueRandom.random());
  randSeed = analogRead (A0);
  randomSeed(randSeed);
  Serial.print("Der 'seed' Wert: ");
  Serial.println(randSeed);
  Serial.println();
  Serial.println("20 Zufallszahlen mit analogem 'seed' Wert:");
  for (i=1;i<=20;i++) Serial.print(random(10));
  Serial.println();
  Serial.println("---------------------------");
  Serial.println();
  delay(500);
  //reset  
}

void loop() {
}

আমি বীজ সহ এবং ছাড়াই এলোমেলো সংখ্যার প্রভাব প্রদর্শন করতে সেটআপ ফাংশন শেষে মাইক্রো-নিয়ন্ত্রণকারীটিকে পুনরায় সেট করতে চাই।

উত্তর:


22

এটি সম্পাদন করার জন্য তিনটি উপায়। (সর্বশেষ আমার প্রিয়)

1) রিসেট পিনে একটি অব্যবহৃত আইও জাম্পার। এটি সাধারণ রান করার জন্য INPUT হিসাবে ছেড়ে দিন, যেমন এটি বাহ্যিকভাবে টানানো হয়। এবং পুনরায় সেট করতে ইচ্ছুক হলে এটি কম এবং আউটপুট হিসাবে সেট করুন। (এটি পুনরায় চালু করুন)

setup() {
  ...
  pinMode(PINtoRESET, INPUT);    // Just to be clear, as default is INPUT. Not really needed.
  digitalWrite(PINtoRESET, LOW); // Prime it, but does not actually set output. 
  ...                            // Does disable 10K pull Up, but who cares.

তারপর যখন ইচ্ছা ...

...
  pinMode(PINtoRESET, OUTPUT);   // lights out. Assuming it is jumper-ed correctly.
  while(1);                      // never gets here.

2) কোড শুরুতে ঝাঁপ দাও।

void(* resetFunc) (void) = 0;  // declare reset fuction at address 0
...
resetFunc(); //call reset

তবে সাবধানতা অবলম্বন করুন , এটি কোনও সত্য পুনরায় সেট করে না, এতে যে সমস্ত নিবন্ধগুলি অপসারণযোগ্য নয়। বরং তারা এবং আইও যেমন রয়েছে তেমনই রয়ে গেছে। যেখানে বুটলোডার থেকে কিছুক্ষণ এবং তারপরে হিপ শুরু হবে। এবং রিসেট হয় না!

3) ওয়াচডগ ব্যবহার করুন। SoftReset গ্রন্থাগার সহজ করে তোলে। যদিও এটি সরাসরি বাস্তবায়ন করা কঠিন নয়। নিচে দেখানো..

#include <avr/wdt.h>
...
setup() {
  ...
  MCUSR = 0;  // clear out any flags of prior resets.
  ...

তারপর যখন ইচ্ছা ...

...
wdt_enable(WDTO_15MS); // turn on the WatchDog and don't stroke it.
for(;;) { 
  // do nothing and wait for the eventual...
} 
...

2
আমি যা পড়েছি তার থেকে প্রথম বিকল্পটি প্রস্তাবিত নয়। বিকল্প 2 এবং 3 জরিমানা।
সেচলীন

2
@ সাচলীন: দয়া করে সে সম্পর্কে আরও বলুন (অপ্ট -১)।
জে রবার্ট

2
অপশন ১. বা কোনও রূপান্তরটি ক্ষণস্থায়ী অবস্থার উপর পাওয়ারের জন্য ততক্ষণ এটি করার একটি পরিষ্কার যথেষ্ট উপায় হতে পারে।
রাসেল ম্যাকমাহন


এটি লক্ষ্য করা উচিত যে বিকল্প 2 বুটলোডারটি চালায় না।
এডগার বোনেট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.