Init
Recovered code from robot 277044
This commit is contained in:
commit
00eec0a8d0
10
.gitignore
vendored
Executable file
10
.gitignore
vendored
Executable file
@ -0,0 +1,10 @@
|
|||||||
|
# ignore code file
|
||||||
|
code.py
|
||||||
|
# ignore backup files
|
||||||
|
._*
|
||||||
|
# Mac OS stuff
|
||||||
|
.DS_Store
|
||||||
|
# ignore the ESP32 MicroPython binary
|
||||||
|
esp32*.bin
|
||||||
|
# ignore the development config file
|
||||||
|
config-dev.json
|
2
README.md
Normal file
2
README.md
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
# Special SumoRobot firmware for usage with the remote
|
||||||
|
Uses UDP packets from remote to the robot instead of BLE or WebSocket
|
101
main.py
Normal file
101
main.py
Normal file
@ -0,0 +1,101 @@
|
|||||||
|
import ubinascii
|
||||||
|
import _thread
|
||||||
|
import os
|
||||||
|
import network
|
||||||
|
from utime import sleep_ms
|
||||||
|
from machine import Timer, Pin, PWM
|
||||||
|
|
||||||
|
print("Press Ctrl-C to stop boot script...")
|
||||||
|
sleep_ms(200)
|
||||||
|
|
||||||
|
led_power = Pin(25, Pin.OUT)
|
||||||
|
led_power.value(1)
|
||||||
|
|
||||||
|
pwm_left = PWM(Pin(15), freq=50, duty=0)
|
||||||
|
pwm_right = PWM(Pin(13), freq=50, duty=0)
|
||||||
|
|
||||||
|
HOSTNAME = "sumo-%s" % \
|
||||||
|
ubinascii.hexlify(network.WLAN().config('mac'),':').decode().replace(":","")[6:]
|
||||||
|
|
||||||
|
url = "ws://sumo.koodur.com:80/p2p/%s/browser/" % HOSTNAME
|
||||||
|
|
||||||
|
ap_if = network.WLAN(network.AP_IF)
|
||||||
|
ap_if.active(False)
|
||||||
|
|
||||||
|
wlan = network.WLAN(network.STA_IF)
|
||||||
|
wlan.active(True)
|
||||||
|
wlan.config(dhcp_hostname=HOSTNAME)
|
||||||
|
#wlan.connect("sumo", "salakala")
|
||||||
|
wlan.connect("sumo","salakala")
|
||||||
|
|
||||||
|
while not wlan.isconnected():
|
||||||
|
print("Connecting to wifi...")
|
||||||
|
sleep_ms(100)
|
||||||
|
|
||||||
|
print("Connected to wifi!", wlan.ifconfig())
|
||||||
|
print("Hi my name is:")
|
||||||
|
print(HOSTNAME)
|
||||||
|
def map_vals(value, leftMin, leftMax, rightMin, rightMax):
|
||||||
|
#http://stackoverflow.com/questions/1969240/mapping-a-range-of-values-to-another
|
||||||
|
# Figure out how 'wide' each range is
|
||||||
|
leftSpan = leftMax - leftMin
|
||||||
|
rightSpan = rightMax - rightMin
|
||||||
|
|
||||||
|
# Convert the left range into a 0-1 range (float)
|
||||||
|
valueScaled = float(value - leftMin) / float(leftSpan)
|
||||||
|
|
||||||
|
# Convert the 0-1 range into a value in the right range.
|
||||||
|
return int(rightMin + (valueScaled * rightSpan))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
import socket
|
||||||
|
import time
|
||||||
|
from time import sleep_ms
|
||||||
|
|
||||||
|
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
|
||||||
|
sock.settimeout(0.3)
|
||||||
|
sock.bind(("", 44444))
|
||||||
|
while True:
|
||||||
|
try:
|
||||||
|
buf = sock.recv(20)
|
||||||
|
except OSError: # timed out
|
||||||
|
pwm_left.duty(0)
|
||||||
|
pwm_right.duty(0)
|
||||||
|
continue
|
||||||
|
|
||||||
|
try:
|
||||||
|
value, forward, backward = buf.decode("ascii").split(":")
|
||||||
|
except ValueError:
|
||||||
|
continue
|
||||||
|
forward, backward = int(forward), int(backward)
|
||||||
|
|
||||||
|
if forward:
|
||||||
|
left, right = 10, -10
|
||||||
|
elif backward:
|
||||||
|
left, right = -10, 10
|
||||||
|
else:
|
||||||
|
left, right = 0, 0
|
||||||
|
|
||||||
|
mapped = map_vals(int(value),-400,400,-10,10)
|
||||||
|
if abs(mapped) > 5:
|
||||||
|
left -= mapped
|
||||||
|
right -= mapped
|
||||||
|
|
||||||
|
if left < -10:
|
||||||
|
left = -10
|
||||||
|
if left > 10:
|
||||||
|
left = 10
|
||||||
|
if right < -10:
|
||||||
|
right = -10
|
||||||
|
if right > 10:
|
||||||
|
right = 10
|
||||||
|
if abs(left) > 2:
|
||||||
|
pwm_left.duty(78 + left)
|
||||||
|
else:
|
||||||
|
pwm_left.duty(0)
|
||||||
|
if abs(right) > 2:
|
||||||
|
pwm_right.duty(78 + right)
|
||||||
|
else:
|
||||||
|
pwm_right.duty(0)
|
||||||
|
sleep_ms(20)
|
Loading…
Reference in New Issue
Block a user