toiy
Dependencies: mbed
main.cpp
00001 #include "mbed.h" 00002 #include "MCP4922.h" 00003 00004 MCP4922 MCP(SPI_MOSI, SPI_SCK,PB_6); // MOSI, SCLK, CS 00005 /*หลักการคิดคือ จะแบ่งเป็น 4state โดยในแต่ละ state จะเป็นการเพิ่มหรือลดของ ค่า i โดยจะวนลูปเรื่อยๆจนออกจากเงื่อนไขและเปลี่ยน state */ 00006 00007 /**** Main Function ***/ 00008 int main(void) 00009 { 00010 MCP.frequency(5000000); 00011 00012 uint16_t i=0; //สร้างตัวแปร(int) 16 bit ชื่อ i ให้มีค่าเท่ากับ 0 00013 uint8_t state=0; //สร้างตัวแปร(int) 8 bit ชื่อ state ให้มีค่าเท่ากับ 0 00014 while(1) { //สร้างลูปให้ทำงานเมื่อมีไฟเข้า 00015 if(state == 0) { //ถ้า state = 0 ให้ทำด้านล่าง 00016 if(i < 0x0FFE/2) { //ถ้า i น้อยกว่าครึ่งหนึ่งของ 4094 ให้ i เพิ่มขึ้น และแสดงค่าที่จอ scop 00017 i++; 00018 MCP.writeA(i); 00019 } 00020 else { //แต่ถ้าไม่ใช่ให้ i เท่ากับครึ่งหนึ่งของ 4094 และให้ state = 1 00021 i = 0x0FFE/2 00022 state = 1; 00023 } 00024 } 00025 else if(state == 1) { //ถ้า state = 1 ให้ทำด้านล่าง 00026 if(i > 0) { //ถ้า i มากกว่า 0 ให้ i ลดลง และแสดงที่จอ scop 00027 i--; 00028 MCP.writeA(i); 00029 } 00030 else { //แต่ถ้าไม่ใช่ให้ i เท่ากับครึ่งหนึ่งของ 4095 และให้ state = 2 00031 i = 0x0FFF; 00032 state = 2; 00033 } 00034 } 00035 else if(state == 2) { //ถ้า state = 2 ให้ทำด้านล่าง 00036 if(i > (0x0FFE/2)) { //ถ้า i มากกว่า ครึ่งหนึ่งของ 4094 ให้ i ลดลง และแสดงที่จอ scop 00037 i--; 00038 MCP.writeA(i); 00039 } 00040 else { //แต่ถ้าไม่ใช่ให้ i เท่ากับครึ่งหนึ่งของ 4094 และให้ state = 3 00041 i= 0x0FFE/2; 00042 state = 3; 00043 } 00044 } 00045 else if(state == 3) { //ถ้า state = 3 ให้ทำด้านล่าง 00046 if(i < 0x0FFE) { //ถ้า i น้อยกว่า 4094 ให้ i เพิ่มขึ้น และแสดงค่าที่จอ scop 00047 i++; 00048 MCP.writeA(i); 00049 } 00050 else { //แต่ถ้าไม่ใช่ให้ i เท่ากับ 0 และให้ state เท่ากับ 0 00051 i= 0; 00052 state = 0; 00053 } 00054 } 00055 wait_us(15); //รอ 15 ไมโครวินาที เพื่อไปต่อ 00056 } 00057 }
Generated on Wed Jul 20 2022 11:46:55 by
1.7.2