參考文章:
http://programmermagazine.github.io/201405/htm/article1.html
兩張板子的 pin 11 ~ pin 13 兩兩對接,pin 11 接 pin 11,pin 12 接 pin 12,pin 13 接 pin 13。 兩張板子的 5V 與 Gnd 也是兩兩對接,5V 接 5V,Gnd 接 Gnd。 最後,ArduinoISP 的 pin 10 接到 Target board 的 Reset pin。
參考文章:
http://programmermagazine.github.io/201405/htm/article1.html
兩張板子的 pin 11 ~ pin 13 兩兩對接,pin 11 接 pin 11,pin 12 接 pin 12,pin 13 接 pin 13。 兩張板子的 5V 與 Gnd 也是兩兩對接,5V 接 5V,Gnd 接 Gnd。 最後,ArduinoISP 的 pin 10 接到 Target board 的 Reset pin。
記錄一下,免得又忘了。
motoduino的picoboard 是用ATmega328晶片去做的。用志文老師的方法,可以把picoboard改韌體,變成一片uno。
找一塊uno,燒錄範例arduinoisp,把燒錄器改成arduino as ISP,再選擇工具/bootloader。燒錄bootloader前要把腳位接好,可以參考之前的文章。
https://wdpsestea.blogspot.com/2019/11/picoboarduno.html
燒好後,各感應器的腳位為:
1.J4-A1(D15),
2J3-A2(D16),
3J2-A4(D18),
4按鈕D2,
5.J1-A5(D19),
6光敏A6(D20),
7.聲音micA3(D17),
8滑桿(A0)]
但我使用digitalRead(2)一直讀不出按鈕的值。看了好多文章,都無解。
最後終於查到這個D2要額外啟動才行
在void setup()要加上
DDRD &= ~( 1 << PD2 ); // Clear the PD2 pin and set PD2 (PCINT0 pin) now as input
PORTD |= (1 << PD2); // Set PIN PD2 as INPUT with pull-up enabled
EICRA |= (1 << ISC00); // set INT0 to trigger on ANY logic change
EIMSK |= (1 << INT0); // Turns on INT0
按鈕未按時,D2的值是1,按下去D2的值是0
1.展示自走車並觀察之
2.提問自走車為何會動
3.馬達作動原理?
4.把3V的直流電正反試接,馬達有何反應?
5.馬達轉速如何調整?
6.規納出直流馬達作動的二要素:正反轉和轉速
7.數位與類比,正反轉是?轉速是?
8.使用microbit找出數位和類比腳位,做出使馬達作動
9.自走之有二個馬達,前進後退左右轉,這二個馬達是如何相互配合做動?(凱斯車子馬達腳位被設定了無法改變,p1 p2為馬力pwm輸出,p8 p12為正反轉數位輸出)
不錯的文章
https://wicg.github.io/serial/
https://github.com/svendahlstrand/web-serial-api
https://github.com/rafaelaroca/web-serial-terminal
https://ithelp.ithome.com.tw/articles/10161189
連線
port = await navigator.serial.requestPort({});
await port.open({ baudRate: 9600 });
寫入資料
const encoder = new TextEncoder();
const writer = port.writable.getWriter();
await writer.write(encoder.encode(value));
writer.releaseLock();
讀出資料
reader = port.readable.getReader();
let value = await reader.read();
let uint8array = new TextEncoder().encode("¢");
let string = new TextDecoder().decode(value.value);
string = string.split('\r\n');
analog_inputs[pin] = string[0];
//console.log('analog_inputs[pin]=',analog_inputs[pin]);
reader.releaseLock();
scratch-gui無法用async 需要npm install babel-polyfill
//async await estea
require('babel-polyfill');
arduino code
void setup() {
Serial.begin(115200);
pinMode(13, OUTPUT);
}
void loop() {
int cmd = Serial.parseInt();
if(cmd == 1){
digitalWrite(13, HIGH);
}else if (cmd == -1){
digitalWrite(13, LOW);
}
Serial.println(analogRead(A0));
}