from machine import ADC,Pin
from time import sleep
from math import exp
adc1=ADC(Pin(32))
adc1.width(ADC.WIDTH_9BIT)
adc1.atten(ADC.ATTN_11DB)
adc2=ADC(Pin(33))
adc2.width(ADC.WIDTH_9BIT)
adc2.atten(ADC.ATTN_11DB)
led=Pin(15,Pin.OUT)
train=Pin(23,Pin.IN,Pin.PULL_DOWN)
deseado=Pin(22,Pin.IN,Pin.PULL_DOWN)
w1=-4.051931
w2=-4.586523
bias=0.9298972
vel=-0.04222126
while(1):
v1=adc1.read()/511
v2=adc2.read()/511
sumatoria=v1*w1+v2*w2+bias
sig=1/(1+exp(-sumatoria))
if sig>=0.5:
led.on()
else:
led.off()
if train.value()==1:
error=deseado.value()-sig
grad=error*sig*(1-sig)
w1=w1+vel*grad*v1
w2=w2+vel*grad*v2
bias=bias+vel*grad
print(w1,w2,bias,error)