สร้างตัว load code hex file ลงบอร์ด arduino ด้วย atmel studio7

ไม่มีความคิดเห็น
    เริ่มต้นเปิดโปรแกรม บนแถบเมนูด้านบนคลิกเลือกที่ Tools > External Tools ได้หน้าต่าง ดังรูป



กำหนดค่าต่างๆ ดังนี้ โดยให้เราคัดลอกไดเรกทอรี arduino ไปเก็บในไดร์ฟอื่นนอกจากไดร์ฟ C ด้วย
  Title: ชื่ออะไรก็ได้
  Command: path ที่อยู่ของไฟล์ avrdude.exe
  Arguments: -Cpathของไฟล์avrdude.conf -v -v -v -v -patmega328p -carduino -P\\.\COM3 -b115200 -D -Uflash:w:"path ที่อยู่ของโปรเจ็ค\Debug\ไฟล์โปรเจ็ค.hex":i

  อาจจะงงนี่คือตัวอย่างของ Arguments
-CE:\arduino\hardware\tools\avr\etc\avrdude.conf -v -v -v -v -patmega328p -carduino -P\\.\COM3 -b115200 -D -Uflash:w:"C:\Users\boss-pc\Documents\Atmel Studio\7.0\led_blink\led_blink\Debug\led_blink.hex":i

สีฟ้าคือ ที่อยู่ของไฟล์ avrdude.conf
สีส้มคือ com port และ baurate หาจากลองรันบอร์ดกับ arduino ide โดยที่เมนูคลิก File > Preference                  เลือกเปิด complilation และ upload ต่อมาให้เราลองรันบอร์ดดูใน output จะเห็นค่า com port และ             baurate แสดงออกมา
สีแดงคือ ที่อยู่ของโปรเจ็ค
สีชมพูคือ ชื่อไฟล์โปรเจ็ค

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

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

8-bit MCU

ไม่มีความคิดเห็น
1. ATtiny20

Flash(Kbytes):                                     2 Kbytes
Pin Count :                                          14
Max. Operating Freq. (MHz):             12 MHz
CPU:                                                    8-bit AVR
# of Touch Channels:                          5
Hardware QTouch Acquisition:          Yes
Max I/O Pins:                                      12
Ext Interrupts:                                      12
Voltage Operator:                                1.8-5.5 voltes

2. NXP P89LPC925FDH

Flash(Kbytes):                                     4 Kbytes/8 Kbytes
Pin Count :                                          20
Max. Operating Freq. (MHz):             18 MHz
CPU:                                                    80C51 CPU
I²C-bus communication port:         400 kHz byte-wide
RAM data memory:                       256-byte 
counter/timers :                             Two 16-bit
Max I/O Pins:                                     18
Voltage Operator:                               2.4 V to 3.6 V


3. PIC12F1571

Program Memory Type:               Flash
Program Memory (KB):                1.75
CPU Speed (MIPS):                     8
RAM Bytes:                                  128
Capture/Compare/PWM Peripherals:          3
Timers:                                         2 x 8-bit, 4 x 16-bit
ADC:                                            4 ch, 10-bit
Comparators:                               1
Temperature Range (C):              -40 to 125
Operating Voltage Range (V):      1.8 to 5.5
Pin Count:                                     8
XLP:                                              Yes
Cap Touch Channels:                   4

4. RL78/G10

CPU Core:                                           RL78 core
Pin Count :                                          10
Code Flash:                                         1 to 4 KB
RAM:                                                  128 to 512 bytes
Max. Operating Freq. (MHz):             20 MHz
I/O port:                                               8
clock/Buzzer output:                           1
key interrupt:                                       6
8/10-bit resolution A/D converter:      4 channels
Voltage:                                               2.0 to 5.5 V

5. ST7LITE49M
Program memory:                               4 Kbytes
RAM:                                                  384 bytes
EEPROM:                                           128 bytes
Pin Count :                                          24
A/D converter:                                    10 channels
key Interrupt                                        13
Max. Operating Freq. (MHz):             8 MHz
Voltage Operator:                               2.4 V to 5.5 V

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

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

วิธีใช้งาน simple calculator phase1

ไม่มีความคิดเห็น
วิธีใช้
     1.เปิด โปรแกรม Arduino IDE เลือกบอร์ดและ Port แล้ว ทำการ Compile และ Upload ตัว Program
2. เปิด Serial Monitor
StartSerial.PNG


3.  ทำการใส่สมการที่ต้องการตามด้วยเครื่องหมาย =

fillInput.PNG


4. โปรแกรมจะแสดง Output ที่ได้ออกมา
seeAns.PNG



5. โจทย์ตัวอย่าง และ คำตอบจาการประมวลผล
manyAns.PNG




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

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

work plan

ไม่มีความคิดเห็น
ภาพรวมระบบ 




ภาพรวมการทำงานโปรแกรม

void loop(){ 
    get_input()  // get input from PS/2 keyboard
    show_input()  // show input to 16x2 LCD
    cutSpace()
    if (check_error){
        getEachMsg()
        ToPosfix()
        calResult
    }
}

สิ่งที่ดำเนินการไปแล้ว
1. Simple Calculator รับอินพุตจาก Serial มาคำนวนสมการจนได้คำตอบ

ปัญหาที่เกิด
1. check_error()
    1. รับเลขตัวเลขที่เป็นลบยังไม่ได้ เช่น -1+2=, -3*4, (-2*3)=
    2. รับเครื่องหมายติดกันไม่ได้ เช่น 1+-*2=, 5-*1=, 1*/-3=
    3. กรณีวงลบติดลบ -(2+1)=
    4. เลขลบแบบมีวงเล็บ เช่น 1+(-2)=, (-5)*4=, ((-1)-1)=
    5. การขึ้นต้นสมการด้วย  *, /, %, ^, ), =
    6. การมีเครื่องหมายก่อน = เช่น 1+1+=, 2*4-=
    7. การมีเครื่องหมายก่อน ) เช่น (1*2-)+1=, 2^(2-3+)=

2. void loop() มีส่วนที่น่าจะรวมในฟังก์ชัน check_error() ได้แก่
    1. การเช็คความยาวของข้อความที่่รับเข้ามาไม่ให้เกินค่าสูงสุดที่กำหนด
    2. การทำงานซับซ้อน

3. code ไม่มี comment

สิ่งที่จะดำเนินการต่อ 
1. วาดรูป Wiring Diagram เพื่อแสดงการเชื่อมต่อของอุปกรณ์ โดยใช้โปรแกรม Fritzing ระบุขาสัญญาณที่ใช้ให้ชัดเจน

2. รับอินพุตจาก Serial แสดงผลลัพธ์ผ่านจอ LCD (16x2 หรือ 20x4)

3. รับอินพุตจาก PS/2 keyboard มาแสดงบน Serial monitor ได้
4. รับข้อมูลจาก PS/2 keyboard เท่านั้น สามารถพิมพ์ตัวอักษรที่ใช้เป็นนิพจน์ทางคณิตศาสตร์ และแสดงผลบนจอ LCD ได้ทันทีเมื่อกดแป้นพิมพ์ และสามารถเลื่อน cursor และแก้ไขได้ ( เกิดจากการรวมงาน 2 กับ 3 )

5. มีเอกสารแสดงการอธิบายการทำงานของโค้ดที่เขียน
    1. อธิบายหลักการทำงานของฮาร์ดแวร์ที่ใช้งาน เช่น โมดูล LCD และ PS/2 Keyboard
    2 ระบุรายการอุปกรณ์ที่ใช้ในการทดลอง
    3. มีรูปสัญญาณจาก PS/2 keyboard ที่วัดด้วย Digital Oscilloscope พร้อมชื่อสัญญาณ และระบุว่า เป็นข้อมูลไบต์อะไรในขณะนั้น
    4. ระบุแหล่งที่มาของโค้ดหรือไลบรารี่ ในกรณีที่ใช้โค้ดจากที่อื่น ซึ่งมาใช้เป็นส่วนหนึ่งของงาน
    5.  มีรูปภาพฮาร์ดแวร์ที่ใช้ทดลองการทำงานของโค้ดจริง


6. แก้ไข check_error 
7. แก้ไข void loop

แบ่งงานรายบุคคล
นาย หฤษฎ์ จันทร์พัฒนพงศ์ 5501012620103
    6. แก้ไข check_error พร้อมเขียนเอกสารอธิบายโค้ด
    5.1 อธิบายหลักการทำงานของฮาร์ดแวร์ที่ใช้งาน เช่น โมดูล LCD และ PS/2 Keyboard
    3. รับอินพุตจาก PS/2 keyboard มาแสดงบน Serial monitor ได้
    4. รับข้อมูลจาก PS/2 keyboard เท่านั้น สามารถพิมพ์ตัวอักษรที่ใช้เป็นนิพจน์ทางคณิตศาสตร์ และแสดงผลบนจอ LCD ได้ทันทีเมื่อกดแป้นพิมพ์ และสามารถเลื่อน cursor และแก้ไขได้ ( เกิดจากการรวมงาน 2 กับ 3 )

นาย ณภัทร รอดแตง 5501012620049
    1. วาดรูป Wiring Diagram เพื่อแสดงการเชื่อมต่อของอุปกรณ์ โดยใช้โปรแกรม Fritzing ระบุขาสัญญาณที่ใช้ให้ชัดเจน
    4. รับข้อมูลจาก PS/2 keyboard เท่านั้น สามารถพิมพ์ตัวอักษรที่ใช้เป็นนิพจน์ทางคณิตศาสตร์ และแสดงผลบนจอ LCD ได้ทันทีเมื่อกดแป้นพิมพ์ และสามารถเลื่อน cursor และแก้ไขได้ ( เกิดจากการรวมงาน 2 กับ 3 )
      5.5.  มีรูปภาพฮาร์ดแวร์ที่ใช้ทดลองการทำงานของโค้ดจริง
      5.2 ระบุรายการอุปกรณ์ที่ใช้ในการทดลอง

นาย พงศ์ญานนท์ ยางเอน 5501012630184
    รวมโค้ด
    7. แก้ไข void loop
    2. รับอินพุตจาก Serial แสดงผลลัพธ์ผ่านจอ LCD (16x2 หรือ 20x4)
    5.3. มีรูปสัญญาณจาก PS/2 keyboard ที่วัดด้วย Digital Oscilloscope พร้อมชื่อสัญญาณ และระบุว่า เป็นข้อมูลไบต์อะไรในขณะนั้น
    5.4. ระบุแหล่งที่มาของโค้ดหรือไลบรารี่ ในกรณีที่ใช้โค้ดจากที่อื่น ซึ่งมาใช้เป็นส่วนหนึ่งของงาน

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

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

calculator by Arduino #1

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




 อุปกรณ์
1. บอร์ด Arduino uno 
2. สาย USB ที่ใช้งานกับ Arduino uno
3. คอมพิวเตอร์

โจทย์
    ทำการต่อ Arduino uno ด้วยสาย USB กับคอมพิวเตอร์   ทำการเปิด Serial monitor แล้วพิมพ์สมการลงไป  พอกดปุ่ม Enter ให้แสดงผลลัพธ์ออกมาผ่าน Serial monitor เช่นกัน

รูปแบบสมการที่ใช้ป้อนใส่ Serial monitor
    กำหนดจำนวนตัวอักษรที่สามารถป้อนเข้า Serial monitor ใช้เครื่องหมาย +, -, *, / , % และ ( )ได้ในลักษณะ ดังนี้

3/2= ENTER
>>> 1

3%2=ENTER
>>> 1

3*2+5=ENTER
>>> 11

3*(2+5)=ENTER
>>> 21

ปัญหาที่พบ
   - ถ้าพิมพ์เครื่องหมายติดกันแบบ *-+ จะเกิด error
   - ไม่สามารถแยกเลขติดลบมาคิดได้ เช่น -5, (-4) 
   - ถ้าไม่ป้อน = ในสมการที่มีวงเล็บจะคำนวณได้
  -  ไม่มีการเช็คว่ามี = ในสมการหรือไม่ 
  -  ถ้าป้อนวงเล็บไม่ครบจะคำนวนผิด เช่น วงเล็บเปิดสองตัวกับวงเล็บปิดตัวเดียวในสมการ ((3-2)+1=
  

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

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