نمایش نتایج: از 1 به 10 از 57
Like Tree12 لایک

موضوع: شیلد lcd کاراکتری 1602 آردوینو

Hybrid View

  1. #1
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    4,064
    نقل قول نوشته اصلی توسط paddesky نمایش پست ها
    ممنون چه خوب ... اما من بلد نیستم چنین تابعی بسازم که پس از فشردن مثلا دکمه پایین، متغیرهای دیگر را بجای متغیرهای فعلی قرار بده
    شما می تونید با این شیلد چنین تابعی بنویسید و بجای متغیرها 1 2 3 4 و ... قرار بدید ... مثلا وقتی روشن میشه روی صفحه سطر اول عدد 1 را نمایش بده و سطر دوم عدد 2 و وقتی که دکمه پایین را بزنیم بجای آنها 3 و 4 را نمایش بده و به همین ترتیب مثلا تا 11 و 12، و بلعکس با دکمه بالا، این عمل معکوس تکرار بشه؟
    من که نمیتونم این کارو انجام بدم!
    اینو تست کنید لطفا :
    کد:
    
    void row_Write(int rownumber , int number) {
      lcd.setCursor(0, rownumber);
      for (int i = 0 ; i < 16)  lcd.print(number);
    }

    این تابع دو تا متغیر داره
    متغیر اول rownumber شماره سطری هست که تصمیم دارید روش چاپ بشه
    number اون عددی هست که تصمیم دارید چاپش کنید کثلا 1 2 3 والی آخر

    البته این کد فقط برای عددهای یک رقمیه اگر دو رقمی بشه باید کد روتغییر بدیم
    قعلا این رو تست کنید لطفا

  2. #2
    Member
    تاریخ عضویت
    Nov 2015
    نوشته ها
    32
    اووو من عدد را مثال زدم و در پروژه خودم عددی نیست ... اینم تصاویر چیزای که میخوام بصورت منو عوض بشه ...

    برای دیدن سایز بزرگ روی عکس کلیک کنید

نام: 20160328_081345 (Copy).jpg
مشاهده: 241
حجم: 102.9 کیلو بایت برای دیدن سایز بزرگ روی عکس کلیک کنید

نام: 20160328_081012 (Copy).jpg
مشاهده: 198
حجم: 102.9 کیلو بایت برای دیدن سایز بزرگ روی عکس کلیک کنید

نام: 20160328_080727 (Copy).jpg
مشاهده: 247
حجم: 100.3 کیلو بایت


    اما وقتی روی یکی از پارامترهای نشان داده میرم، بعد از اینکه میخواهد به حالت اول بازگردد، چند تا از حروف از حالت قبل در تصویر می ماند ...!!!

    برای دیدن سایز بزرگ روی عکس کلیک کنید

نام: 20160328_081147 (Copy).jpg
مشاهده: 199
حجم: 104.5 کیلو بایت

    این کدهای منه، میخوام اونای که نمایش بدم بصورت منو باشن، البته الان این را آپلود نکردم، این پارامترهام هستند که بلد نیستم منو بسازم که عوض بشن

    کد HTML:
    #include "EmonLib.h"  // Include Emon Library
    EnergyMonitor emon1;  // Create an instance
    // include LCD the library: 
    #include <LiquidCrystal.h>
    // select the pins used on the LCD panel
    LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
    
    // define some values used by the panel and buttons
    int lcd_key     = 0;
    int adc_key_in  = 0;
    #define btnRIGHT  0
    #define btnUP     1
    #define btnDOWN   2
    #define btnLEFT   3
    #define btnSELECT 4
    #define btnNONE   5
    
    // read the buttons
    int read_LCD_buttons()
    {
    adc_key_in = analogRead(0);      // read the value from the sensor 
    // my buttons when read are centered at these valies: 0, 144, 329, 504, 741
    // we add approx 50 to those values and check to see if we are close
    if (adc_key_in > 1000) return btnNONE; // We make this the 1st option for speed reasons since it will be the most likely result
    if (adc_key_in < 50)   return btnRIGHT;  
    if (adc_key_in < 195)  return btnUP; 
    if (adc_key_in < 380)  return btnDOWN; 
    if (adc_key_in < 555)  return btnLEFT; 
    if (adc_key_in < 790)  return btnSELECT;   
    return btnNONE;  // when all others fail, return this...
    }
    
    void setup()   
    {  
      Serial.begin(9600);   // set up the LCD’s number of columns and rows:
      lcd.begin(20, 4);  
      emon1.voltage(2, 234.26, 1.7);  // Voltage: input pin, calibration, phase_shift
      emon1.current(1, 111.1);  // Current: input pin, calibration.
    }  
    void loop()  
    {  
      emon1.calcVI(20,2000);  // Calculate all. No.of half wavelengths (crossings), time-out
      emon1.serialprint();  // Print out all variables (realpower, apparent power, Vrms, Irms, power factor)
        unsigned int long timemillis=millis();  //keeping the track of the time since the device is switched ON
      unsigned int long time=timemillis/1000;  
       float realPower       = emon1.realPower; //extract Real Power into variable
      float apparentPower   = emon1.apparentPower;  //extract Apparent Power into variable
      float powerFactor=emon1.powerFactor;//extract Apparent Power into variable rFactor     = emon1.powerFactor; //extract Power Factor into Variable
      float supplyVoltage   = emon1.Vrms; //extract Irms into Variable
      float Irms            = emon1.Irms;  
      //displaying the values  
    lcd.setCursor(1,0);  
    lcd.print("Energy Monitor");   
    lcd.setCursor(0,1);  
    lcd.print("V=");   
    lcd.print(supplyVoltage);  
    lcd.setCursor(9,1);  
    lcd.print("I=");   
    lcd.print(Irms);   
    lcd.setCursor(-4,2);  
    lcd.print("PowerFactor=");  
    lcd.print(powerFactor);  
    lcd.setCursor(-4,3);  
    lcd.print("Units(kWh)=");  
    lcd.print(abs(realPower*time)/abs(1000*3600));
    lcd.setCursor(-4,4);
    lcd.print("(kW)=");   
    lcd.print(realPower/1000);    
    lcd.setCursor(-4,5);   
    lcd.print("(KVA)=");    
    lcd.print(apparentPower/1000);    
    lcd.setCursor(-4,6);   
    lcd.print("(KVAR)=");   
    lcd.print((sqrt((apparentPower*apparentPower)-(realPower*realPower)))/1000);    
    }
    ویرایش توسط paddesky : 04-02-2016 در ساعت 05:39 PM دلیل: تصحیح سایز تصاویر

  3. #3
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    4,064
    نقل قول نوشته اصلی توسط paddesky نمایش پست ها
    اووو من عدد را مثال زدم و در پروژه خودم عددی نیست ... اینم تصاویر چیزای که میخوام بصورت منو عوض بشه ...

    }oop()
    {
    emon1.calcVI(20,2000); // Calculate all. No.of half wavelengths (crossings), time-out

    lcd.setCursor(9,1);
    lcd.print("I=");
    lcd.print(Irms);
    lcd.setCursor(-4,2);
    lcd.print("PowerFactor=");
    lcd.print(powerFactor);
    lcd.setCursor(-4,3);
    lcd.print("Units(kW
    lcd.print("(KVAR)=");
    lcd.print((sqrt((apparentPower*apparentPower)-(realPower*realPower)))/1000);
    }[/HTML]

    متاسفانه من وقت نمی کنم روی کدخودتون براتون ادیت کنم

    چیزی که مسلمه اینه که شما باید اون جاهایی رو که داده داره دائم عدش تغییر می کنه با نال پر کنیدو دوباره داده بگیرید و عدد نشون بدید چون در غیر این صورت در صفحه پرش خواهید داشت.

  4. #4
    Member
    تاریخ عضویت
    Nov 2015
    نوشته ها
    32
    نقل قول نوشته اصلی توسط magmagmary نمایش پست ها
    متاسفانه من وقت نمی کنم روی کدخودتون براتون ادیت کنم

    چیزی که مسلمه اینه که شما باید اون جاهایی رو که داده داره دائم عدش تغییر می کنه با نال پر کنیدو دوباره داده بگیرید و عدد نشون بدید چون در غیر این صورت در صفحه پرش خواهید داشت.
    والا سر در نیاوردم چی گفتید، امیدوارم فرصت کنید ادیت کنید، کمکی باشه برای من

  5. #5
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    4,064
    نقل قول نوشته اصلی توسط paddesky نمایش پست ها
    والا سر در نیاوردم چی گفتید، امیدوارم فرصت کنید ادیت کنید، کمکی باشه برای من
    خط دوم چاپ شده روی lcd تون رو می بینید ؟
    شما هر بار که کلید رو فشار می دید فقط دارید خط دوم رو تغییر می دید درسته ؟

    خب
    کافیه هر بار که هر کلیدی فشار داده میشه این تابع اول اجرا بشه تا خط دوم رو کامل پاک کنه (فقط خط دوم ):
    کد:
    void row_Write() {
      lcd.setCursor(0,1);
      for (int i = 0 ; i < 16)  lcd.print(" ");
    }
    از این یک بار تست بگیر .

    بعد از این که هر کلیدی رو فشار دادی این تابع رو صدا بزن ببین تا این مرحله درست پیش میره یا نه
    لایک کردن

  6. #6
    Member
    تاریخ عضویت
    Nov 2015
    نوشته ها
    32
    نقل قول نوشته اصلی توسط magmagmary نمایش پست ها
    اینو تست کنید لطفا :
    کد:
    
    void row_Write(int rownumber , int number) {
      lcd.setCursor(0, rownumber);
      for (int i = 0 ; i < 16)  lcd.print(number);
    }

    این تابع دو تا متغیر داره
    متغیر اول rownumber شماره سطری هست که تصمیم دارید روش چاپ بشه
    number اون عددی هست که تصمیم دارید چاپش کنید کثلا 1 2 3 والی آخر

    البته این کد فقط برای عددهای یک رقمیه اگر دو رقمی بشه باید کد روتغییر بدیم
    قعلا این رو تست کنید لطفا
    راه حلی پیدا نشد لطـــفا!؟ طبق توضیحات و کدی که گفتم

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •  

SEO by vBSEO