[JM] 9/7/2017
What is firmata?
https://github.com/firmata/protocol
'''tfirmata''' is a Tcl implementation of Arduino Firmata:
* Original code: https://github.com/pdt/tfirmata
* documentation: http://www.p-code.org/tfirmata
* an enhanced version: http://www.androwish.org/index.html/dir?ci=68647d69a65029d3&name=assets/tfirmata/src
The original '''tfirmata''' did not work for me on Windows7, I suspect there is an endless loop on the tfirmata::open cmd.
The enhanced version (by [chw]) worked just fine, with the following code as a minimum example:
Example #1 (Blinking LED on Arduino UNO)
console show
package require tfirmata
set bd [tfirmata::open COM8]
$bd mode 13 out
for {set i 1} {$i <20} {incr i} {
$bd dset 13 1
tfirmata::sleep 250
$bd dset 13 0
tfirmata::sleep 250
puts $i
}
puts done...
----
Example #2:<
>
Writing to LCD with I2c module:<
>
with some like this:<
>
[http://www.4tronix.co.uk/arduino/pictures/i2c_03.jpg]
#
# twi_LCD.tcl
#
# Enables TWI pins, and writes a message
# to LCD with I2C module
#
console show
package require tfirmata
proc send_data {byte} {
global bd addr
set byte [string range $byte end-1 end]
puts "byte: $byte"
foreach {n1 n2} [split $byte ""] break
$bd twiset $addr 0x${n1}5 0x${n1}1 0x${n2}5 0x${n2}1
}
set bd [tfirmata::open COM8]
$bd twiconfig
set addr 0x27
# LCD Initialization for 4-BIT bus
$bd twiset $addr 0x34 0x30
tfirmata::sleep 5
# LCD Initialization for 4-BIT bus
$bd twiset $addr 0x34 0x30 0x34 0x30 0x24 0x20 0x24 0x20
# 2 Line LCD, 5x10 character
$bd twiset $addr 0xc4 0xc0
# 01 = Clear Display
$bd twiset $addr 0x04 0x00 0x14 0x10
# 0C = Display Control,Display ON
$bd twiset $addr 0x04 0x00 0xc4 0xc0
# 06 = Entry Mode Set, Auto Increment of cursor position
$bd twiset $addr 0x04 0x00 0x64 0x60
#
foreach letter [split "Tcl/Tk & Arduino" ""] {
binary scan $letter "H2" valor
send_data $valor
}
$bd close
Notice how 2 bytes are required to write a single 4-bit value to the LCD:
[LCD_Bit_Bang]
<>Enter Category Here