2021年8月20日

arduino uno 當bootloader

參考文章:

 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。

2021年8月19日

picoboard變uno

 記錄一下,免得又忘了。

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

 


2021年8月10日

自走車之於教學

 1.展示自走車並觀察之

2.提問自走車為何會動

 

3.馬達作動原理?


4.把3V的直流電正反試接,馬達有何反應?

 


 5.馬達轉速如何調整?


6.規納出直流馬達作動的二要素:正反轉和轉速


7.數位與類比,正反轉是?轉速是?


8.使用microbit找出數位和類比腳位,做出使馬達作動

 



9.自走之有二個馬達,前進後退左右轉,這二個馬達是如何相互配合做動?(凱斯車子馬達腳位被設定了無法改變,p1  p2為馬力pwm輸出,p8 p12為正反轉數位輸出)


2021年8月7日

web serial api記事

不錯的文章 

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));
}