نحوه تنظیم پین آنالوگ

3 ماه قبل
53 بازدید

0

سلام خسته نباشید چگونه یک دستور برای سنسور داده شود  برای پین انالوگ وبعد از چند ثانیه دیگر سنسور عمل نکند 

مثال در برنامه نوشته 

در کل میخواهم بعد دستور و اجرا دیگر دیجیتال ویرایت عمل نکند تا دستور بعدی
کل مشکل در اینجاست که دستور داده شده و سنسور عمل کرده و بعد از دستور فشار باد در سنسور 10 psi کم وزیاد میشود من میخواهم دیگر دیجیتال ویرایت عمل نکند

 if (pot == 0) {
    lcd.setCursor(0, 0); lcd.print("on"); 
    digitalWrite(led1, HIGH);
    if ( psi1 < 51) {
      digitalWrite(led1, LOW);
    }

 

#include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7); // Addr, En, Rw, Rs, d4, d5, d6, d7, backlighpin, polarity
#define led1
4 #define led2 5 #define led3 6 #define led4 7 #define led5 8 int pot;
void setup()
{
  lcd.begin(20, 4);
  lcd.begin(20, 4);
  lcd.setBacklightPin(3, POSITIVE); // BL, BL_POL
  lcd.setBacklight(HIGH);
  Serial.begin(9600);
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);
  pinMode(led4, OUTPUT);
  pinMode(led5, OUTPUT);
}
void loop()
{
  lcd.backlight();
  float sensorVoltage1 = analogRead(A1);
  float sensorVoltage2 = analogRead(A2);
  float sensorVoltage3 = analogRead(A3);
  int psi1 = ((sensorVoltage1 - 10) / 9) * 1 * 5;
  int psi2 = ((sensorVoltage2 - 10) / 9) * 1 * 5;
  int psi3 = ((sensorVoltage3 - 10) / 1) * 1.8;
  lcd.setCursor(0, 1);
  lcd.print("Psi F ");
  lcd.print(psi1);
  lcd.setCursor(8, 1);
  lcd.setCursor(10, 1);
  lcd.print(" Psi R ");
  lcd.print(psi2);
  lcd.setCursor(17, 1);
  lcd.setCursor(2, 2);
  lcd.print(" TANK AIR");
  lcd.print("[ ]");
  lcd.setCursor(12, 2);
  lcd.print(psi3);
  pot = analogRead(A0);
  pot = map(pot, 0, 1023, 0, 9);
  Serial.println(pot);
  if (psi3 <= 200)
  {
    digitalWrite(led5, LOW);
    lcd.setCursor(14, 3);
    lcd.print("on ");
  }
  if (psi3 == 275)
  {
    digitalWrite(led5, HIGH);
    lcd.setCursor(14, 3);
    lcd.print("off");
  }
  lcd.setCursor(0, 0);
  lcd.print("0 1 2 3 4 4 3 2 1 0 ");
  if (pot == 0)
  {
    lcd.setCursor(0, 0);
    lcd.print("on");
    digitalWrite(led1, HIGH);
    if (psi1 < 51)
    {
      digitalWrite(led1, LOW);
    }
    digitalWrite(led2, HIGH);
    digitalWrite(led3, HIGH);
    if (psi2 < 57)
    {
      digitalWrite(led3, LOW);
      digitalWrite(led4, HIGH);
    }
  }
  if (pot == 1)
  {
    lcd.setCursor(1, 0);
    lcd.print("on");
    digitalWrite(led1, HIGH);
    if (psi1 < 53)
    {
      digitalWrite(led1, LOW);
    }
    digitalWrite(led2, HIGH);
    digitalWrite(led3, HIGH);
    if (psi2 < 59)
    {
      digitalWrite(led3, LOW);
      digitalWrite(led4, HIGH);
    }
  }
  if (pot == 2)
  {
    lcd.setCursor(3, 0);
    lcd.print("on");
    digitalWrite(led1, HIGH);
    if (psi1 < 54)
    {
      digitalWrite(led1, LOW);
    }
    digitalWrite(led2, HIGH);
    digitalWrite(led3, HIGH);
    if (psi2 < 60)
    {
      digitalWrite(led3, LOW);
      digitalWrite(led4, HIGH);
    }
  }
  if (pot == 3)
  {
    lcd.setCursor(5, 0);
    lcd.print("on");
    digitalWrite(led1, HIGH);
    if (psi1 < 55)
    {
      digitalWrite(led1, LOW);
    }
    digitalWrite(led2, HIGH);
    digitalWrite(led3, HIGH);
    if (psi2 < 61)
    {
      digitalWrite(led3, LOW);
      digitalWrite(led4, HIGH);
    }
  }
  if (pot == 4)
  {
    lcd.setCursor(7, 0);
    lcd.print("on");
    digitalWrite(led1, HIGH);
    if (psi1 < 57)
    {
      digitalWrite(led1, LOW);
    }
    digitalWrite(led2, HIGH);
    digitalWrite(led3, HIGH);
    if (psi2 < 61)
    {
      digitalWrite(led3, LOW);
      digitalWrite(led4, HIGH);
    }
  }
  if (pot == 5)
  {
    lcd.setCursor(9, 0);
    lcd.print("on");
    digitalWrite(led1, HIGH);
    digitalWrite(led2, HIGH);
    if (psi1 > 56)
    {
      digitalWrite(led2, LOW);
    }
    digitalWrite(led3, HIGH);
    digitalWrite(led4, HIGH);
    if (psi2 > 61)
    {
      digitalWrite(led4, LOW);
    }
  }
  if (pot == 6)
  {
    lcd.setCursor(11, 0);
    lcd.print("on");
    digitalWrite(led1, HIGH);
    digitalWrite(led2, HIGH);
    if (psi1 > 55)
    {
      digitalWrite(led2, LOW);
    }
    digitalWrite(led3, HIGH);
    digitalWrite(led4, HIGH);
    if (psi2 > 60)
    {
      digitalWrite(led4, LOW);
    }
  }
  if (pot == 7)
  {
    lcd.setCursor(13, 0);
    lcd.print("on");
    digitalWrite(led1, HIGH);
    digitalWrite(led2, HIGH);
    if (psi1 > 54)
    {
      digitalWrite(led2, LOW);
    }
    digitalWrite(led3, HIGH);
    digitalWrite(led4, HIGH);
    if (psi2 > 59)
    {
      digitalWrite(led4, LOW);
    }
  }
  if (pot == 8)
  {
    lcd.setCursor(15, 0);
    lcd.print("on");
    digitalWrite(led1, HIGH);
    digitalWrite(led2, HIGH);
    if (psi1 > 53)
    {
      digitalWrite(led2, LOW);
    }
    digitalWrite(led3, HIGH);
    digitalWrite(led4, HIGH);
    if (psi2 > 58)
    {
      digitalWrite(led4, LOW);
    }
  }
  if (pot == 9)
  {
    lcd.setCursor(17, 0);
    lcd.print("on");
    digitalWrite(led1, HIGH);
    digitalWrite(led2, HIGH);
    if (psi1 > 51)
    {
      digitalWrite(led2, LOW);
    }
    digitalWrite(led3, HIGH);
    digitalWrite(led4, HIGH);
    if (psi2 > 57)
    {
      digitalWrite(led4, LOW);
    }
  }
}
03 تیر 03 در 08:57
محمد عمادالدین
1

با سلام، لطفا کد خود را سری بعدی مرتب ارسال کنید. همچنین دقیق تر توضیح بدهید که چه کاری میخواهید انجام بدهید.  – محمد دمیرچی 03-04-03 در 09:21

افزودن دیدگاه

1 پاسخ ثبت شده است
0

با سلام

جناب خدمتتان عرض کردم لطفا کامل سؤال را طرح کنید. انتظار نداشته باشید که دیگران باید کشف کنند که هدف شما چه چیزی می باشد.

به هر حال

با توجه به توضیحات شما به نظر میرسد مقدار پایه A0 را میخوانید و با توجه به این مقدار تصمیم میگیرید که خروجی بر روی پایه های دیجیتال به چه صورتی بشود.

مشکل شما در اینجا می باشد که بعد از انجام این تغییرات بر روی پایه های دیجیتال مقدار خواندن A0 شما تغییراتی میکند و باعث میشود که دوباره مقدار خروجی های شما تغییر پیدا کند.

برای حل این مشکل 2 روش وجود دارد.

اگر بعد از تغییرات مقدار خواندن A0 برای شما مهم نمی باشد می توانید یک شرط بر روی خطی که مقدار A0 را میخواند قرار بدهید تا دیگر این مقدار خوانده نشود که باعث بهم ریختن دیتا نشود.

اگر همچنان این دیتا را لازم دارید می توانید با یک شرط 2 مرحله این مقدار اندازه گیری شده را به یک متغیر دیگر انتقال بدهید تا بر روی آن دیتا را همچنان داشته باشید.

اگر فقط میخواهید جلو تغییرات شدید را بگیرید می توانید از کتابخانه میانگیر گیر Average برای خواندن دیتا استفاده کنید تا متغیر شما نسبت به زمان و دیتا های کلی نرم تر رفتار کند

04 تیر 03 در 06:03
محمد دمیرچی
4030

افزودن دیدگاه


انجمن کافه‌ربات © 1400