From f1bf7be6ff010c2bc088a52fa486a962314895c0 Mon Sep 17 00:00:00 2001 From: 42loop <ulf.freyhoff@hfbk-hamburg.de> Date: Thu, 3 Mar 2022 16:51:22 +0100 Subject: [PATCH] clean up, added speed slider & status feedback from machine --- data/index.html | 30 +++++++-------- rolli_websock.ino | 94 ++++++++++++++++++++++++++++------------------- 2 files changed, 71 insertions(+), 53 deletions(-) diff --git a/data/index.html b/data/index.html index a6d7a9d..c820a2d 100644 --- a/data/index.html +++ b/data/index.html @@ -33,7 +33,9 @@ </div> </main> + <br> +<p><span id="status">0</span></p> <script> @@ -61,21 +63,14 @@ } var bgcolor = [ - 'rgba(255, 99, 132, 0.2)', 'rgba(54, 162, 235, 0.2)', - 'rgba(255, 206, 86, 0.2)', - 'rgba(75, 192, 192, 0.2)', - 'rgba(153, 102, 255, 0.2)', - 'rgba(255, 159, 64, 0.2)' - ] + 'rgba(255, 99, 132, 0.2)', + + ] var bordercolor = [ - 'rgba(255, 99, 132, 1)', 'rgba(54, 162, 235, 1)', - 'rgba(255, 206, 86, 1)', - 'rgba(75, 192, 192, 1)', - 'rgba(153, 102, 255, 1)', - 'rgba(255, 159, 64, 1)' + 'rgba(255, 99, 132, 1)', ] var lschartoptions=Object.create(defaultoptions); @@ -111,7 +106,7 @@ - lschart.config.options.scales.y.max=1000; + lschart.config.options.scales.y.max=4000; lschart.update(); @@ -138,7 +133,7 @@ }, options: rschartoptions }); - rschart.config.options.scales.y.max=1000; + rschart.config.options.scales.y.max=4000; rschart.update(); ctx = document.getElementById('rightpowerchart').getContext('2d'); @@ -218,12 +213,17 @@ function onMessage(event) { var state; let data = JSON.parse(event.data); - +console.log(data); var x = (new Date()).getTime(), ls = parseFloat(data.leftsens), rs = parseFloat(data.rightsens), lp = parseFloat(data.leftpower), - rp = parseFloat(data.rightpower); + rp = parseFloat(data.rightpower), + status = data.status; + + var o = document.getElementById("status"); + o.innerHTML = status; + if (lschart.config.data.labels.length>50) { diff --git a/rolli_websock.ino b/rolli_websock.ino index f8dd0d6..a78c461 100644 --- a/rolli_websock.ino +++ b/rolli_websock.ino @@ -1,5 +1,7 @@ // use websocket +//#define NOROLLI + #include "credentials.h" const char* host = "rolli"; @@ -13,6 +15,7 @@ const int rpowerlimit=1000; const int ldistlimit=400; const int rdistlimit=400; +char rollistat[100]="Ok\0"; char cmd[20]; /* @@ -77,6 +80,8 @@ const int r_step=1; volatile int tcount=0; +volatile byte lscount=0; +volatile byte rscount=0; //pins: @@ -106,7 +111,7 @@ Adafruit_MPU6050 mpu; Adafruit_VL53L0X sensors[] = {Adafruit_VL53L0X(),Adafruit_VL53L0X()}; const int xshutpin[]={32,33}; -volatile int dist[]={0,0}; +volatile int dist[]={450,450}; const int freq = 5000; const int resolution = 8; @@ -157,13 +162,11 @@ void IRAM_ATTR TimerHandler0(void) void sensortask( void * parameter) { for(;;){ + powerl=analogRead(power_lpin); powerr=analogRead(power_rpin); - - log_to_websocket(); - delay(250); -continue; - + +#ifndef NOROLLI mpu.getEvent(&a, &g, &temp); VL53L0X_RangingMeasurementData_t measure; @@ -177,8 +180,13 @@ continue; //Serial.println(" out of range "); } } - - Serial.print("LP: "); +#else + dist[0]=random(350,800); + dist[1]=random(350,800); + +#endif + +/* Serial.print("LP: "); Serial.print(powerl);Serial.print("\t"); Serial.print("RP: "); Serial.print(powerr);Serial.print("\t"); @@ -194,9 +202,8 @@ continue; Serial.print(", Y: "); Serial.print(a.acceleration.y); Serial.println(); - - - +*/ + /* X - vorne / hinten Y - links /rechts @@ -205,32 +212,45 @@ continue; ledstate=!ledstate; digitalWrite(ledpin,ledstate); - - if (dist[0]<ldistlimit) {Serial.println("LEFT SENSOR!, turn right");turnright();} - if (dist[1]<rdistlimit) {Serial.println("RIGHT SENSOR!, turn left");turnleft();} + int action=0; + + if (dist[0]<ldistlimit) lscount+=1; + if (dist[1]<rdistlimit) rscount+=1; + + if (lscount==2) {lscount=0;Serial.println("LEFT SENSOR!, turn right");strcpy(rollistat,"left sensor, turning right");action=1;} + if (rscount==2) {rscount=0;Serial.println("RIGHT SENSOR!, turn left");strcpy(rollistat,"right sensor, turning left");action=2;} if ((powerl>lpowerlimit) and (powerr>rpowerlimit)) {Serial.println("collision"); - turnaround();} - + strcpy(rollistat,"frontal collision, turning around"); + action=3; + } else { if (powerl>lpowerlimit) {Serial.println("LEFT POWER!, turn right"); - turnright();} + strcpy(rollistat,"left power, turning right"); + action=1;} if (powerr>rpowerlimit) {Serial.println("RIGHT POWER!, turn left"); - turnleft();} + strcpy(rollistat,"right power, turning left"); + action=2;} } - - mytime+=1; - if (mytime==4) - { - //log_to_websocket(); - mytime=0; - } + if (action==0) strcpy(rollistat,"Ok"); + else digitalWrite(ledpin,HIGH); + +//notify first + wsnotifyClients(); + +//actions with delays: + switch (action) + { + case 1:turnright();break; + case 2:turnleft();break; + case 3:turnaround();break; + } delay(250); @@ -238,20 +258,14 @@ continue; } -void log_to_websocket() -{ - //Serial.println("notify..."); - wsnotifyClients(); -} - void wsnotifyClients() { - char buffer[200]; - //limit dist to 2048: - - sprintf(buffer, "{\"leftsens\":\"%i\",\"rightsens\":\"%i\",\"leftpower\":\"%i\",\"rightpower\":\"%i\"}", random(0,100),random(0,100),random(0,100),random(0,100)); + char buffer[300]; + sprintf(buffer, "{\"leftsens\":\"%i\",\"rightsens\":\"%i\",\"leftpower\":\"%i\",\"rightpower\":\"%i\",\"status\":\"%s\"}", dist[0],dist[1],powerl,powerr,rollistat); + Serial.println(buffer); ws.textAll(buffer); } + void handleWebSocketMessage(void *arg, uint8_t *data, size_t len) { AwsFrameInfo *info = (AwsFrameInfo*)arg; if (info->final && info->index == 0 && info->len == len && info->opcode == WS_TEXT) { @@ -402,9 +416,13 @@ void setup(void) { initWebSocket(); //init i2c devices - - //setID(); - //mpu_init(); + + #ifndef NOROLLI + setID(); + mpu_init(); + #else + + #endif //scan i2c devices i2c_scanner(); -- GitLab