วันจันทร์ที่ 14 มกราคม พ.ศ. 2562

T6




#line 1 "C:/Users/bunthit/Desktop/TEST 1/T6.c"
void main()
{
 TRISB=0xFF;
 TRISC=0;
 Lcd_Init(&PORTC);
 Lcd_Cmd(LCD_CURSOR_OFF);
 Lcd_Cmd(LCD_CLEAR);
 Lcd_Out(1,2,"                SMART LEARNING");
 Lcd_Out(2,1,"                ADVANCE PIC BY C");
 while(1)
 {
 RETURN:if(PORTB.F0==0)
 {
 Lcd_Cmd(LCD_SHIFT_RIGHT);
 while(PORTB.F0==0);
 }
 if(PORTB.F1==0)
 {
 Lcd_Cmd(LCD_SHIFT_LEFT);
 while(PORTB.F1==0);
 }
 if(PORTB.F2==0)
 {
 while(1)
 {
 Lcd_Cmd(LCD_SHIFT_RIGHT);
 delay_ms(100);
 if(PORTB.F0==0||PORTB.F1==0)goto RETURN;
 }
 }
 }
}

T5



#line 1 "C:/Users/bunthit/Desktop/TEST 1/T5.c"
unsigned char segment[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
unsigned char i1,i2,i3,i4,i5,i6;

void interrupt()
{
 i6++;
 if(i6>9)
 {
 i6=0;
 i5++;
 }
 if(i5>9)
 {
 i5=0;
 i4++;
 }
 if(i4>9)
 {
 i4=0;
 i3++;
 }
 if(i3>9)
 {
 i3=0;
 i2++;
 }
 if(i2>9)
 {
 i2=0;
 i1++;
 }
 if(i1>9)i1=0;
 INTCON.INT0IF=0;
}

void main()
{
 TRISB=0xFF;
 TRISC=0;
 TRISD=0;
 INTCON.INT0IE=1;
 INTCON.INT0IF=0;
 INTCON2.INTEDG0=0;
 INTCON.GIE=1;
 while(1)
 {
 PORTD=0xDF;
 PORTC=segment[i1];
 delay_ms(10);
 PORTD=0xEF;
 PORTC=segment[i2];
 delay_ms(10);
 PORTD=0xF7;
 PORTC=segment[i3];
 delay_ms(10);
 PORTD=0xFB;
 PORTC=segment[i4];
 delay_ms(10);
 PORTD=0xFD;
 PORTC=segment[i5];
 delay_ms(10);
 PORTD=0xFE;
 PORTC=segment[i6];
 delay_ms(10);
 }
}

T4


#line 1 "C:/Users/bunthit/Desktop/TEST 1/T4.c"



unsigned char segment[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
int i=6,j=0;

void interrupt()
{
 j--;
 if(j<0)
 {
 j=9;
 i--;
 }
 if(i==0&&j==0)
 {
 T0CON.TMR0ON=0;
 PORTB.F5=1;
 }
 TMR0H=0xC2;
 TMR0L=0xF7;
 INTCON.TMR0IF=0;
}

void main()
{
 TRISB=0x01;
 TRISC=0;
 PORTB.F5=0;
 T0CON=0x05;
 TMR0H=0xC2;
 TMR0L=0xF7;
 INTCON.TMR0IE=1;
 INTCON.TMR0IF=0;
 INTCON.GIE=1;
 while(1)
 {
 if(PORTB.F0==0)T0CON.TMR0ON=1;
  PORTB.F6 =0; PORTB.F7 =1;
 PORTC=segment[i];
 delay_ms(50);
  PORTB.F6 =1; PORTB.F7 =0;
 PORTC=segment[j];
 delay_ms(50);
 }
}

T3



 #line 1 "C:/Users/bunthit/Desktop/TEST 1/T3.c"



unsigned char segment[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
unsigned char i1,i2,i3,i4,i5,i6;

void interrupt()
{
 i6++;
 if(i6>9)
 {
 i6=0;
 i5++;
 }
 if(i5>9)
 {
 i5=0;
 i4++;
 }
 if(i4>9)
 {
 i4=0;
 i3++;
 }
 if(i3>5)
 {
 i3=0;
 i2++;
 }
 if(i2>9)
 {
 i2=0;
 i1++;
 }
 if(i1>5)i1=0;
 TMR3H=0xD8;
 TMR3L=0xF0;
 PIR2.TMR3IF=0;
}

void main()
{
 TRISB=0;
 TRISC=0;
 TRISD=0;
 TRISE=0;
 T3CON=0x80;
 TMR3H=0xD8;
 TMR3L=0xF0;
 PIE2.TMR3IE=1;
 PIR2.TMR3IF=0;
 INTCON.PEIE=1;
 INTCON.GIE=1;
 T3CON.TMR3ON=1;
 while(1)
 {
  PORTE.F0 =0; PORTE.F1 =1;
 PORTC=segment[i1];
 PORTD=segment[i3];
 PORTB=segment[i5];
 delay_ms(25);
  PORTE.F0 =1; PORTE.F1 =0;
 PORTC=segment[i2];
 PORTD=segment[i4];
 PORTB=segment[i6];
 delay_ms(25);
 }
}

T2


  โค้ดภาษาซี

#line 1 "C:/Users/bunthit/Desktop/TEST 1/T2.c"




unsigned char segment[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
unsigned char i,j;

void interrupt()
{
 if(INTCON.INT0IF==1)
 {
 i++;
 if(i>9)i=0;
 INTCON.INT0IF=0;
 }
 if(INTCON3.INT1IF==1)
 {
 j++;
 if(j>9)j=0;
 INTCON3.INT1IF=0;
 }
}

void main()
{
 TRISB=0x03;
 TRISC=0;
 INTCON.INT0IE=1;
 INTCON.INT0IF=0;
 INTCON2.INTEDG0=0;
 INTCON3.INT1IE=1;
 INTCON3.INT1IF=0;
 INTCON2.INTEDG1=0;
 INTCON.GIE=1;
 while(1)
 {
  PORTB.F5 =0; PORTB.F6 =1; PORTB.F7 =1;
 PORTC=segment[i];
 delay_ms(25);
  PORTB.F5 =1; PORTB.F6 =0; PORTB.F7 =1;
 PORTC=~0x3F;
 delay_ms(25);
  PORTB.F5 =1; PORTB.F6 =1; PORTB.F7 =0;
 PORTC=segment[j];
 delay_ms(25);
 }

}

T1

\
                     
                                                                     
    โค้ดภาษาซี


#line 1 "C:/Users/bunthit/Desktop/TEST 1/T1.c"
 void main()
{
 unsigned char dice[]={0x08,0x22,0x2A,0x55,0x5D,0x77};
 unsigned char i;
 TRISC=0;
 TRISB=0x01;
 PORTC=0;
 while(1)
 {
 if(PORTB.F0==0)
 {
 PORTC=dice[i];
 delay_ms(3000);
 PORTC=0;
 }
 i++;
 if(i>5)i=0;
 }
}









วันอาทิตย์ที่ 7 ตุลาคม พ.ศ. 2561

มินิโปรเจ้คการเปิด-ปิดไฟ AC220Vด้วยเสียง ( แก้ไขงาน การอธิบายหลักการทำงานของโค้ด )

มินิโปรเจ้คการเปิด-ปิดไฟ AC220Vด้วยเสียง

                                 
อุปกรณ์ที่ใช้
1. Arduino UNO R3 - Made in italy
2. Sensor Shield V 5.0
3. สาย Jumper Female to Male ยาว 20cm.
4. สาย Jumper Female to Female ยาว 20cm.
5. Relay 1 Channel 5V DC Solid State High Level Trigger
6. Voice Sound Detection Sensor Module
รูปผลงาน
1.



2.




3.
                               
                          บล็อกไดอะแกรม

การต่อวงจร ระหว่าง  Sensor Shield กับ เซ็นเซอร์เสียง

Shield <-> เซ็นเซอร์เสียง

G     <-> GND
V     <-> VCC
S(4) <-> OUT
การต่อวงจร ระหว่าง  Sensor Shield กับ รีเลย์

Shield <-> รีเลย์
G     <-> DC-
V     <-> DC+
S(5) <-> CH1
การต่อวงจร ระหว่าง  หลอดไฟ กับ รีเลย์


            การอธิบายหลักการทำงานของโค้ด
                ตัวแปรมีอยู่6ตัว  มีอยู่3ชนิด // ชนิดที่1.int  ชนิดที่2.long ชนิดที่3.boolean      
                      
        ตัวแปร6ตัวได้แก่ 
1.sound_sensor 
2. relay
3.clap
4. detection_range_start 
5. detection_range
6.status_lights
                          
int sound_sensor = 4;   //  กำหนดให้ sound sensorให้เป้น ขา 4.
int relay = 5;   //  กำหนดให้ relay ให้เป้น ขา 5

int clap = 0;    //  กำหนดให้ clap มีค่าเป็น 0
long detection_range_start = 0; //  กำหนดให้ detection_range_start มีค่าเป็น 0
long detection_range = 0;  //  กำหนดให้ detection_range  มีค่าเป็น 0
boolean status_lights = false;     //   boolean status_lights  มี ค่าเป็น false หรือเท่ากับ 0
void setup() {   // ฟังชั่นนี้คือการเซ็ตค่าเริ่มต้นเมื่อ Aduino เริ่มการทำงาน
  pinMode(sound_sensor, INPUT);  //  คือการกำหนด sound_sensor ให้เป็น อินพุต
  pinMode(relay, OUTPUT);   //   คือการกำหนด  relay  ให้เป็น เอาพุต
}

void loop() {  // ฟังชั่นนี้คือการทำงานวน ซ้ำๆ
  int status_sensor = digitalRead(sound_sensor);
  if (status_sensor == 0)   // คือการอ่านค่าจากซาวเซ็นเซอร์แล้วเอามาเก็บไว้ที่สเตตัส จากนั้นส่งมาที่ ฟังชั่นอีฟเพื่อตรวจสอบสถานะของข้อมูลว่าเป็นจริงหรือไม่
  {
    if (clap == 0)    // ถ้าตรวจสอบเจอจะทำงานในตีกาเปิดในช่องนี้แต่ถ้าไม่จะกระโดดข้ามไปทำอีกช่องนึง
    {
      detection_range_start = detection_range = millis();  // ค่าของ  detection_range เท่ากับ detection_range  เท่ากับ millis()
      clap++;   // clap เพิ่มขึ้น 1 
    }
    else if (clap > 0 && millis()-detection_range >= 50)  // ถ้าค่าของ clap มีค่ามากกว่า 0 เเละเปรียบเทียบ millis()-detection_range มากกว่าหรือเท่ากับ 50
    {
      
    }etection_range = millis();// เก็บค่าเวลา ใน  millis() เก็บไว้ในตัวแปร detection_range 
      clap++; //  clap เพิ่มขึ้น1
  }
  if (millis()-detection_range_start >= 400)  //    ถ้าค่าของ millis() ลบด้วยค่าของ detection_range_start  มากกว่าหรือเท่ากับ400ให้ทำงานปีกกาล่าง
  {
    if (clap == 2) //ลงมาทำงานที่บรรทัดนี้
    {
      if (!status_lights)    // ถ้า ผลลัพท์status_lights เป็นเท็จ ให้ทำในปีกกาล่าง
        {
          status_lights = true; //  ให้ค่า   status_lights มีค่าเท่า true หรือ1
          digitalWrite(relay, HIGH); // ส่งค่า ไปยังขาดิจิตอลให้ relay มีค่าเป็น high หรือ1
        }
        else if (status_lights)  //  ถ้าไม่ตรงตามเงื่อนไข 
        {
          status_lights = false; //   ให้ค่า  status_lights  มีค่าเป็น  false หรือ 0 
          digitalWrite(relay, LOW); // ส่งค่า ไปยังขาดิจิตอลให้ relay มีค่าเป็น low หรือ0
        }
    }
    clap = 0; //   ค่าของ clap มีค่าเท่ากับ 0
  }

}


ผลการทดลอง
วิธีควบคุม Arduino  ด้วย เซ็นเซอร์เสียง Voice Sound Detection Sensor Module เราจะควบคุม การ เปิด ปิดไฟ AC 220V ด้วยเสียงตบมือ โดยเราจะใช้เซ็นเซอร์ตรวจจับเสียง +  รีเลย์ และแสดงผลด้วยไฟ หลอดไฟบ้าน

     ลิ้งดูวีดีโอผลการทดลองมินิโปรเจ้คเปิด-ปิดไฟ220Vด้วยเสียง