Initial commit

master
Drew Bednar 5 years ago
commit 7d93f770dc

@ -0,0 +1,3 @@
# Learn Arduino
Experiments in learning arduino and communication protocols

@ -0,0 +1 @@
env/

@ -0,0 +1,25 @@
#!/usr/bin/env python3
"""
A very basic serial client that can unpack a binary 32 int from a message
and print it to the console.
message: b'H<bytes>\r\n'
"""
import serial
PORT = '/dev/cu.usbmodem2667001'
def main():
print('Connecting to serial port: ', PORT)
with serial.Serial(PORT, 9600, timeout=1) as ser:
_ = ser.readline()
print('Connection made')
while True:
msg = ser.readline()
val = int.from_bytes(msg[1:-2], byteorder='little', signed=False)
print('Recieved: ', val)
if __name__ == '__main__':
main()

@ -0,0 +1,74 @@
/*
Binary Send
This code is meant to demonstrate the sending of binary information
from the arduino to a serial client. See the serial_client.py file
which can read the payload being sent
*/
unsigned int large_number = 3257493648;
/*
Decimal: 3257493648
Hex: C2296890
Binary: 11000010 00101001 01101000 10010000
b1 byte: 11000010
b1 hex: C2
b2 byte: 101001
b2 hex: 29
b3 byte: 1101000
b3 hex: 68
b4 byte: 10010000
b4 hex: 90
Number: 11000010001010010110100010010000
*/
// unpacks the int into bytes
byte b1 = large_number >> 24;
byte b2 = large_number >> 16;
byte b3 = large_number >> 8;
byte b4 = large_number;
// Places the bytes in little endian
byte byteBuffer[4] = {b4, b3, b2, b1};
void setup() {
//Initialize serial and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}
// prints title with ending line break
Serial.print("Decimal: ");Serial.print(large_number); Serial.println();
Serial.print("Hex: ");Serial.print(large_number, HEX); Serial.println();
Serial.print("Binary: ");Serial.print(large_number, BIN); Serial.println();
Serial.print("b1 byte: ");Serial.print(b1, BIN); Serial.println();
Serial.print("b1 hex: ");Serial.print(b1, HEX); Serial.println();
Serial.print("b2 byte: ");Serial.print(b2, BIN); Serial.println();
Serial.print("b2 hex: ");Serial.print(b2, HEX); Serial.println();
Serial.print("b3 byte: ");Serial.print(b3, BIN); Serial.println();
Serial.print("b3 hex: ");Serial.print(b3, HEX); Serial.println();
Serial.print("b4 byte: ");Serial.print(b4, BIN); Serial.println();
Serial.print("b4 hex: ");Serial.print(b4, HEX); Serial.println();
Serial.print("Number: "); Serial.print(large_number, BIN); Serial.println();
Serial.println("---------------------------------");
Serial.print("high byte: ");Serial.print(highByte(large_number >> 16), BIN); Serial.println();
Serial.print("high hex: ");Serial.print(highByte(large_number >> 16), HEX); Serial.println();
Serial.print("low byte: ");Serial.print(lowByte(large_number >> 16), BIN); Serial.println();
Serial.print("low hex: ");Serial.print(lowByte(large_number >> 16), HEX); Serial.println();
Serial.println("---------------------------------");
Serial.print("high byte: ");Serial.print(highByte(large_number), BIN); Serial.println();
Serial.print("high hex: ");Serial.print(highByte(large_number), HEX); Serial.println();
Serial.print("low byte: ");Serial.print(lowByte(large_number), BIN); Serial.println();
Serial.print("low hex: ");Serial.print(lowByte(large_number), HEX); Serial.println();
}
void loop() {
Serial.write('H');
Serial.write(byteBuffer, sizeof(byteBuffer));
Serial.println();
delay(1000);
}

@ -0,0 +1,27 @@
/*
Blink
Turns on an LED on for one second, then off for one second, repeatedly.
This example code is in the public domain.
*/
// Pin 13 has an LED connected on most Arduino boards.
// Pin 11 has the LED on Teensy 2.0
// Pin 6 has the LED on Teensy++ 2.0
// Pin 13 has the LED on Teensy 3.0
// give it a name:
int led = 13;
// the setup routine runs once when you press reset:
void setup() {
// initialize the digital pin as an output.
pinMode(led, OUTPUT);
}
// the loop routine runs over and over again forever:
void loop() {
digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
delay(100); // wait for a second
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(100); // wait for a second
}
Loading…
Cancel
Save