Wednesday, October 30, 2019

Arduino + Tinygo + Docker + Avrdude

Using golang to program arduino uni board

1- Code
package main

import (
    "machine"
    "time"
    // "fmt"
)

const led = machine.LED

func main() {
    // fmt.Println("Test")
    println("Hello, TinyGo")
    led.Configure(machine.PinConfig{Mode: machine.PinOutput})
    for {
        led.Low()
        time.Sleep(time.Second)

        led.High()
        time.Sleep(time.Second)
    }
}
* fmt is not supported, cannot be used.

2- Compile using tinygo docker image 
docker run --rm -v $(pwd):/src tinygo/tinygo:0.9.0 
tinygo build -o /src/test1.hex -size=short -target=arduino /src/tinygo/tinygo1.go
* The source is in $(pwd)/tinygo/tinygo1.go

3- Upload by avrdude in command line

/Applications/Arduino.app/Contents/Java/hardware/tools/avr/bin/avrdude 
-C/Applications/Arduino.app/Contents/Java/hardware/tools/avr/etc/avrdude.conf 
-v -patmega328p -carduino -P/dev/cu.usbserial-1440 -b115200 -D -Uflash:w:$(pwd)/tinygo/test1.hex:i
* I got command from Arduino IDE, by enabling verbose mode for upload and run a sample upload

Saturday, October 26, 2019

Raspberry Pi Testing/Unstable Repository

Add the following one to /etc/apt/sources.list

deb http://mirrordirector.raspbian.org/raspbian/ testing main contrib non-free rpi