17/07/2567

ปีการศึกษา 2567 Arduino ม. 5 ( int cpu )

 📣ความรู้ไปประยุกต์ใช้อุปกรณ์อิเล็กทรอนิกส์เพื่อสร้างสรรค์เป็นโครงงานตามที่โจทย์กำหนดได้วงจร


📣ความรู้ไปประยุกต์ใช้อุปกรณ์อิเล็กทรอนิกส์เพื่อสร้างสรรค์เป็นโครงงานตามที่โจทย์กำหนดได้คำสั่งเขียน 

#include <LiquidCrystal_I2C.h>     

LiquidCrystal_I2C lcd(0x27,16,2);  

byte gauge_empty[8] =  {B11111, B00000, B00000, B00000, B00000, B00000, B00000, B11111};    

byte gauge_fill_1[8] = {B11111, B10000, B10000, B10000, B10000, B10000, B10000, B11111};    

byte gauge_fill_2[8] = {B11111, B11000, B11000, B11000, B11000, B11000, B11000, B11111};    

byte gauge_fill_3[8] = {B11111, B11100, B11100, B11100, B11100, B11100, B11100, B11111};    

byte gauge_fill_4[8] = {B11111, B11110, B11110, B11110, B11110, B11110, B11110, B11111};    

byte gauge_fill_5[8] = {B11111, B11111, B11111, B11111, B11111, B11111, B11111, B11111};   

byte gauge_left[8] =   {B11111, B10000, B10000, B10000, B10000, B10000, B10000, B11111};    

byte gauge_right[8] =  {B11111, B00001, B00001, B00001, B00001, B00001, B00001, B11111};    

byte gauge_mask_left[8] = {B01111, B11111, B11111, B11111, B11111, B11111, B11111, B01111};  

byte gauge_mask_right[8] = {B11110, B11111, B11111, B11111, B11111, B11111, B11111, B11110}; 

byte warning_icon[8] = {B00100, B00100, B01110, B01010, B11011, B11111, B11011, B11111};    

byte gauge_left_dynamic[8];   

byte gauge_right_dynamic[8];  

int cpu_gauge = 0;       

char buffer[10];         

int move_offset = 0;     

const int gauge_size_chars = 16;       

char gauge_string[gauge_size_chars+1]; 

void setup()

{

  lcd.init();                       

  lcd.createChar(7, gauge_empty);   

  lcd.createChar(1, gauge_fill_1);  

  lcd.createChar(2, gauge_fill_2);  

  lcd.createChar(3, gauge_fill_3);  

  lcd.createChar(4, gauge_fill_4);  

  lcd.createChar(0, warning_icon);   

  lcd.backlight();                  

}

void loop()

{

  float units_per_pixel = (gauge_size_chars*5.0)/100.0;        

  int value_in_pixels = round(cpu_gauge * units_per_pixel);  

  int tip_position = 0;      

  if (value_in_pixels < 5) {tip_position = 1;}                            

  else if (value_in_pixels > gauge_size_chars*5.0-5) {tip_position = 3;}  

  else {tip_position = 2;}                                                

  move_offset = 4 - ((value_in_pixels-1) % 5);     

  for (int i=0; i<8; i++) {  

     if (tip_position == 1) {gauge_left_dynamic[i] = (gauge_fill_5[i] << move_offset) | gauge_left[i];}  

     else {gauge_left_dynamic[i] = gauge_fill_5[i];}                                                     

     gauge_left_dynamic[i] = gauge_left_dynamic[i] & gauge_mask_left[i];                                

  }

  for (int i=0; i<8; i++) {   

     if (tip_position == 3) {gauge_right_dynamic[i] = (gauge_fill_5[i] << move_offset) | gauge_right[i];}  

     else {gauge_right_dynamic[i] = gauge_right[i];}                                                       

     gauge_right_dynamic[i] = gauge_right_dynamic[i] & gauge_mask_right[i];                              

  }  

  lcd.createChar(5, gauge_left_dynamic);     

  lcd.createChar(6, gauge_right_dynamic);   

  for (int i=0; i<gauge_size_chars; i++) {  

      if (i==0) {gauge_string[i] = byte(5);}                        

      else if (i==gauge_size_chars-1) {gauge_string[i] = byte(6);}  

      else {                                                       

         if (value_in_pixels <= i*5) {gauge_string[i] = byte(7);}   

         else if (value_in_pixels > i*5 && value_in_pixels < (i+1)*5) {gauge_string[i] = byte(5-move_offset);} 

         else {gauge_string[i] = byte(255);}                       

      }

  }

  lcd.setCursor(0,0);                        

  sprintf(buffer, "CPU:%3d%% ", cpu_gauge);   

  lcd.print(buffer);                          

  lcd.write(byte(0));                        

  lcd.setCursor(0,1);             

  lcd.print(gauge_string);         

  cpu_gauge = cpu_gauge +1;

  if (cpu_gauge > 100) {cpu_gauge = 0;}

  delay(100);  

}



ไม่มีความคิดเห็น:

แสดงความคิดเห็น

ครูเต้ง เทคโนฯ