diff --git a/main.ipynb b/main.ipynb new file mode 100644 index 0000000..8c687d4 --- /dev/null +++ b/main.ipynb @@ -0,0 +1,131 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 8, + "id": "42e3a72f", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "T1 = 27.73 °C\n" + ] + } + ], + "source": [ + "import serial\n", + "import time\n", + "\n", + "ser = serial.Serial('/dev/cu.usbmodem101', 115200, timeout=1) # Adjust port\n", + "time.sleep(2) # Wait for Arduino reset\n", + "\n", + "# Example: read temperatures\n", + "ser.write(b'T1\\n')\n", + "t1 = ser.readline().decode().strip()\n", + "time.sleep(1) # Wait for Arduino reset\n", + "print('T1 =', t1, '°C')\n", + "ser.close()" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "4fe435c4", + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "Temps = np.ones(10)*40\n", + "Reads = np.zeros(10)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "4be8126a", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "T1 = 26.86 °C\n", + "T1 = 26.82 °C\n", + "T1 = 26.89 °C\n", + "T1 = 26.79 °C\n", + "T1 = 26.82 °C\n", + "T1 = 26.79 °C\n", + "T1 = 26.89 °C\n", + "T1 = 26.79 °C\n", + "T1 = 26.89 °C\n", + "T1 = 26.82 °C\n" + ] + } + ], + "source": [ + "import serial\n", + "import time\n", + "\n", + "ser = serial.Serial('/dev/cu.usbmodem101', 115200, timeout=1) # Adjust port\n", + "time.sleep(2) # Wait for Arduino reset\n", + "\n", + "for i in range(len(Temps)):\n", + " value = Temps[i]\n", + " command = f\"Q1 {value}\\n\"\n", + " ser.write(command.encode('ascii'))\n", + " ser.write(b'T1\\n')\n", + " t1 = ser.readline().decode().strip()\n", + " Reads[i] = t1\n", + " print('T1 =', t1, '°C')\n", + " time.sleep(1) # Wait for Arduino reset\n", + "\n", + "ser.close()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "db140260", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([26.86, 26.82, 26.89, 26.79, 26.82, 26.79, 26.89, 26.79, 26.89,\n", + " 26.82])" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Reads" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".venv (3.13.5)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.13.5" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/my-tclab-firmware/my-tclab-firmware.ino b/my-tclab-firmware/my-tclab-firmware.ino index 7db2f29..4f0d20f 100644 --- a/my-tclab-firmware/my-tclab-firmware.ino +++ b/my-tclab-firmware/my-tclab-firmware.ino @@ -9,8 +9,6 @@ const int Q2 = 5; // PWM at Q2 (output) // vars and constants: -int T1Val; -int T2Val; const int nAvg = 10; // samples per reading const long BAUD = 115200; // Freq serial comm const float factor = 3.3/1024*100; // 3.3V/1024*100 @@ -38,21 +36,42 @@ void setHeater(int pin, float value) { void setup() { // put your setup code here, to run once: + Serial.begin(BAUD); pinMode(Q1, OUTPUT); pinMode(Q2, OUTPUT); pinMode(LED, OUTPUT); - setHeater(Q1,40); analogReference(EXTERNAL); - Serial.begin(BAUD); delay(100); - Serial.println("Temps"); + //Serial.println("TCLab ready"); } void loop() { // put your main code here, to run repeatedly: - float t1Val = readDeg(T1); - float t2Val = readDeg(T2); - Serial.print(t1Val,4); Serial.print(','); - Serial.println(t2Val,4); - delay(250); + if(Serial.available()){ + String cmd = Serial.readStringUntil('\n'); + cmd.trim(); + + if(cmd == "T1"){ + float T1Val = readDeg(T1); + Serial.println(T1Val); + } + else if(cmd == "T2"){ + float T2Val = readDeg(T2); + Serial.println(T2Val); + } + else if(cmd.startsWith("Q1 ")){ + int val = cmd.substring(3).toInt(); + setHeater(Q1, val); + } + else if(cmd.startsWith("Q2 ")){ + int val = cmd.substring(3).toInt(); + setHeater(Q2, val); + } + else if(cmd == "R1"){ + Serial.println("Not yet"); + } + else { + Serial.println("Command Error"); + } + } }