ตอบ 1. ฟังก์ชั้น Setup() เป็นฟังก์ชั้นประกาศตัวแปรที่จะนำมาใช้ในโปรแกรม
ตัวอย่าง void setup ()
{
pinMode (13,OUTPUT); //เรียกใช้ pin 13 output
digitalWrite (13,LOW); //pin 13 = low
}
2.ฟังก์ชั้น loop() เป็นฟังก์ชั้นที่ทำงานเช่นให้ LED กระพริบมันจะทำงานวนลูปอยู่อย่างนั้นตลอดครับ
ตัวอย่าง void loop()
{
digitalWrite(13,HIGH); //LED ติด
delay(1000);
digitalWrite(13,LOW); // LED ดับ
delay(1000);
}
3.ฟังก์ชั้น interrupt () เป็นฟังกืชั้นเกียวกับการขัดจังหวะการทำงานของโปรแกรม ถ้ามีการ interrupt ไม่ว่าโปรแกรมจะทำอะไรอยู่ก็ตามก็ต้องหยุดการทำงานมาทำ interrupt ก่อนแล้วค่อยกลับไปทำงานขอโปรแกรมต่อครับ
ตัวอย่าง / Interrupt INT0 (Port PD2)
ISR (INT0_vect)
{
if (i)
sbi(PORTA,0); // Set bit
else
cbi(PORTA,0); // Clear bit
i = !i; // Toggle bit
delay_ms(200); // Delay debound
}
4.ฟังก์ชั้น serialpoptc() เป็นฟังก์ชั้นสื่อสารอนุกรมเช่น arduino to arduino
ตัวอย่าง
4.ฟังก์ชั้น serialpoptc() เป็นฟังก์ชั้นสื่อสารอนุกรมเช่น arduino to arduino
ตัวอย่าง
#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); // RX, TX
void setup()
{
// Open serial communications and wait for port to open:
Serial.begin(57600);
while (!Serial) {
; // wait for serial port to connect. Needed for Leonardo only
}
Serial.println("Goodnight moon!");
// set the data rate for the SoftwareSerial port
mySerial.begin(4800);
mySerial.println("Hello, world?");
}
void loop() // run over and over
{
if (mySerial.available())
Serial.write(mySerial.read());
if (Serial.available())
mySerial.write(Serial.read());
}
ตอนบ่ายผมได้ทำโปรแกรมกดสวิทช์แล้วให้มอเตอร์หมุนครับโดยการสั่งทาง serialpoptc ครับแต่โปรแกรมมันยังไม่สมบูรณ์ครับคือมันยังกดแล้วไม่หมุนบางครั้งก้หมุนผมจึงคิดว่าต้องใช้ interrupt
เข้ามาครับแต่วันนี้ได้แค่นี้ก็ดีใจแล้วครับ
ส่วนของโปรแกรมนะครับ
อาดูโน่ตัวติดกับ CNC shield ครับ
อาดูโน่ตัวติดกับ CNC shield ครับ
#define EN 8 //enable
#define X_DIR 5 //direction
#define X_STP 2 //step
int incomingByte = 0;
int BYTE = 0;
void step (boolean dir, byte dirPin, byte stepperPin, int steps)
{
digitalWrite (dirPin, dir);
for (int i = 0; i <steps; i++)
{
digitalWrite (stepperPin, HIGH);
delayMicroseconds (800);
digitalWrite (stepperPin, LOW);
delayMicroseconds (800);
}
}
void setup ()
{
Serial.begin(9600);
pinMode (X_DIR, OUTPUT);
pinMode (X_STP, OUTPUT);
pinMode (EN, OUTPUT);
digitalWrite (EN, LOW);
}
void loop() {
if (Serial.available() > 0) {
incomingByte= Serial.read();
Serial.print ("> ");
Serial.println (incomingByte,BYTE);
if (incomingByte == 'A') {
step1();
}
if (incomingByte == 'B') {
step2();
}
}
}
void step1 (void)
{
step (HIGH, X_DIR, X_STP, 800); // call function
// delay(100);
}
void step2 (void){
step (LOW, X_DIR, X_STP, 800); // call function
//delay(100);
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
อาดูโน่ตัวรับค่าสวิทช์ ครับ
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void setup() {
pinMode(2,INPUT_PULLUP);
attachInterrupt(0, Wap, LOW);
Serial.begin(9600);
}
void loop() {
Serial.println("B");
delay(200);
}
void Wap()
{
Serial.println("A");
while(digitalRead(2)==LOW);
ไม่มีความคิดเห็น:
แสดงความคิดเห็น