زود مداخل الاردوينو

مستشعر يعمل باللمس – اصنعها بنفسك- arduino touch switch
October 11, 2015
using pir sensor with arduino
October 20, 2015

طبعا كل الناس بتشتغل في مشاريع ليها و بتلاقي مشاكل كتير انها مش لاقية مداخل تدخل فيها المستشعرات فكانت بتقرر انها تشتري اردوينو تانية زي الميجا بس الميجا للاسف غالية ففي كذا حل للحكاية دي من ضمنها اللي احنا حنكي عليها النهارده وهي

 😉 انك تستخدم كذا مستشعر ديجيتال علي مدخل انالوج واحد ودا بيتم ازاي ؟

هنعرف دلوقتي

بس الاول لازم نعرف ايه هوا الانالوج؟

هي عبارة عن اشارة مش بس 1 او 0 ياموصل او مش موصل لا هيا الحاجة الللي مابينهم اي 0.5او0.6مثلا دا بيدل مثلا ان الشارع منور جدا او منور شوية او مظلم دا الانالوج طب في الانالوج ازاي في الاردوينو

ال1 يعتبر 1023 وال0 يعتبر 0 وتعتبر 1023 هي 5 فولت اذن في الانالوج ال2.5 فولت تعتبر 512 تقريباوبتقدر الاردوينو والميكروكنترولر تعمل دا من خلال ان من جواه في حاجة اسمها محول من الانالوج للديجيتال بمقدار 10 بت ودا المسئول عن الرقم دا اللي هوا1023 وكدا فهمنا الانالوج نخش علي موضوعنا

هيا الفكرة ذات نفسها بسيطة جدا هيا عبارة عن مبدا في الكهرباء معروف وهو تقسيم الفولت باستخدام مقاومتين فقط يوصلوا علي التوالي اي وراء بعد بحيث ان بعد ان يوصلوا علي التوالي يوصل طرف منهم علي الموجب والطرف التاني علي الارضي والوصلة المشتركة هوا دا الفولت اللي الناتج ودا عن طريق القانون دا

VD

ودي رسمة التوصيلات بتاعت المقاومتين

Resistive_divider2.svg

 فالتجربة اللي هنعملها هيا عبارة عن كذا مفتاح ضاغط موصل بيهم تقسيم الفولت ولكن دا بطريقة معينة حيث احنا لما نستخدام المفتاح لازم نوصل حاجة اسمها 

Pull down Resistor  

وهيا عبارة عن مقاومة بتوصل مع الارضي ومع توصيلية المفتاح التانية عشان يكون مرجع ليه انه يكون صفر  لما ميكونش مداس عليه

ودلوقتي وصل التوصيل العادي للمفتاح ولكن قبل ماتوصل ال5 فولت نحط مقاومة اي قيمة انتا عاوزهادا بس عشان تقسم الفولت بس 

  دا التوصيل العادي للمفتاح من غير توصيل المقاومة الاخريpullDownResistor

 طب ايه علاقة المقاومة دي مع تقسيم الفولت اللي بيحصل انك لما بتدوس علي المفتاح بتوصل المقاومة بتاعت ال5فولت مع المقاومة اللي متوصلة علي الارضي علي التوالي وبالتالي بقي عندك تقسيم فولت وكدا كدا انتا لما بتوصل مفتاح بتاخد وصلة رايحة للاردوينو عشان تقرا الاشارة ودي في نفس الوقت الوصلة اللي بيتوصلها تقسيم الفولت فتوصلها علي اي بن انالوجUntitled

😉 ملاحظة

 انتا ممكن تستخدم اي مقاومة انتا عاوزها اي قيمة يعني بدل من اللي موصلها علي الارضي بس غالبا

 10K ohm 

وكمان تقدر تستخدم اي مقاومةاللي موصلة مع ال5فولتولكن كل واحدة لازم تكون مختلفة عن اللي متوصلة مع المفتاح التاني  بس الارجح 

تكون بين10-100 كيلو اوماوي اي قيمة لكن كل مقاومة تتوصل مع مفتاح وال5 فولت لازم يكونوا مختلفين عن بعض

  🙁 ودلوقتي هتسال عن اللي هيحصل بعد كدا وازاي استخدمهم في الكود

اللي بيعمله الكود انه بيقرا القيم بتاعت المفاتيح ولما الاتنين يدوسوا مع بعض وتقدر تزود علي الكود كذا مفتاح

والكود دا بس عشان تعرف القيم بس انتا تقدر تسستخدمه انك تحدد القيم بتاعت المفتاح بعد ما انتا جربت لاول مرة وتخرنها عشان مش كل مرة تجرب دا وتشوف القيم قبل ماتنفذ الكود

///////////////////////////////////////
///This code is made by: Hany Hamed///
//////////////////////////////////////
int re[3]; //define the array that will store the value of buttons
int rea=0;//define the variable that will store the reading of the analog pin
void setup() {
Serial.begin(9600); //initialize the communication between the computer and arduino
Serial.println("Hello"); //print hello
delay(4000);//wait for seconds 
}
void Test(){//this function is made to let you know the value of each switch and store it
  Serial.print("Switch 1");
  delay(1000);
  Serial.print("-push");
  delay(3000);
  re[0]=analogRead(A0);
  Serial.println("-finish");
  delay(2000);
  Serial.print("Switch 2");
  delay(1000);
  Serial.print("-push");
  delay(3000);
  re[1]=analogRead(A0);
  Serial.println("-finish");
  delay(2000);
  Serial.print("Switch 1&2");
  delay(1000);
  Serial.print("-push");
  delay(3000);
  re[2]=analogRead(A0);
  Serial.println("-finish");
  delay(2000);
}
void recognise(){//this function is used to recognise any switch 
    rea=analogRead(A0);//reading the A0
    //the error is -/+5 
    if(rea<re[0]+5&&rea>re[0]-5){
      Serial.print(re[0]);
      Serial.println("Swi1");
    }
    if(rea<re[1]+5&&rea>re[1]-5){
      Serial.print(re[1]);
      Serial.println("Swi2");
    }
    if(rea<re[2]+5&&rea>re[2]-5){
      Serial.print(re[2]);
      Serial.println("Swi1&&Swi2");
    }

}
int afterecognise(){//this function using with out Test function you wiil use Test funcion in start 
//but if you use Test every time it will take a lot of time so you will see the value of the first time and store it in the variables 
   rea=analogRead(A0);
    re[0]=45;
    re[1]=93;
    re[2]=132;
    if(rea<re[0]+5&&rea>re[0]-5){
      Serial.print(re[0]);
      Serial.println("Swi1");
  return  1;
  }
    if(rea<re[1]+5&&rea>re[1]-5){
      Serial.print(re[1]);
      Serial.println("Swi2");
  return 2;  
  }
    if(rea<re[2]+5&&rea>re[2]-5){
      Serial.print(re[2]);
      Serial.println("Swi1&&Swi2");
  return 3;  
  }
  //I will return value that show any button is pushed 
  //the first button is 1
  //the second button is 2
  //the third button if you want to connect it 4
  //the first and second is 3
  //like binary 
  //1,2,4,8,16,32,64,128,256,512,1024......void loop() {
  Test();
  recognise();
  //afterecognise();
}

طب بعد كدا هتيجي تفكر انا مش عايز استخدمه عشان المفاتيح وبس انتا عايز تستخدمه لمستشعرات ديجيتال تانية

طب ازاي

في المفتاح انا كنت بوصل مقاومة علي التغذية بتاعته وكان في مقاومة تانية علي الارضي فالحل انك تعمل تقسيم فولت وتدخل الاشارة اللي خارجة من المستشعر علي التغذية بتاعت تقسيم الفولت بالشكل دا

Untitled2

واوصل زي اللي في الصورة 

ودا كان الشرح الكامل للموضوع بس لسا في طرق كتير عشان تزود المداخل والمخارج بتاعت الاردوينو

Facebook
Facebook
Twitter
YouTube