<\/a><\/p>\n\n
El\u00a0c\u00f3digo\u00a0fuente es:<\/p>\n
[sourcecode language=\u00bbpy\u00bb]
\n\/*
\nTema: mascota para la ni\u00f1a
\nAcciones: detector de objetos y diferencias en el terreno, con sensor de apagado en el lomo.
\nAutor: walterleonardo
\nPartes: PINGUINO 18f2550, sensores infrarrojos, servo motores modificados<\/p>\n
*\/<\/p>\n
int stopd=74;\/\/punto quieto de servo modificado
\nint stopi=72;\/\/punto quieto de servo modificado
\nint adelantei=250;
\nint adelanted=1;
\nint atrasi=1;
\nint atrasd=250;
\nint topirdata,frontirdata,bottonirdata,topirdatai,frontirdatai,bottonirdatai;
\n#define topir 15
\n#define bottonir 14
\n#define frontir 13
\n#define izquierdo 0
\n#define derecho 1<\/p>\n
void lectura() \/\/lectora de sensores
\n{
\ntopirdata=analogRead(topir);
\nbottonirdata=analogRead(bottonir);
\nfrontirdata=analogRead(frontir);<\/p>\n
}<\/p>\n
void caida() \/\/accion ante posible caida o modificacion del terreno
\n{
\n\/\/detiene marcha
\nservo.write(izquierdo,stopi);
\nservo.write(derecho,stopd);
\ndelay(500);
\n\/\/atras
\nservo.write(izquierdo,atrasi);
\nservo.write(derecho,atrasd);
\ndelay(1000);
\n\/\/gira derecha
\nservo.write(izquierdo,adelantei);
\nservo.write(derecho,atrasd);
\ndelay(1000);
\n\/\/arranca
\nlectura();
\nif (bottonirdatai<=bottonirdata-100) caida(); servo.write(izquierdo,adelantei); servo.write(derecho,adelanted); } void atras() \/\/accion ante obstaculo { \/\/detiene marcha servo.write(izquierdo,stopi); servo.write(derecho,stopd); delay(200); \/\/atras servo.write(izquierdo,atrasi); servo.write(derecho,atrasd); delay(500); \/\/gira derecha servo.write(izquierdo,adelantei); servo.write(derecho,atrasd); delay(1000); \/\/arranca lectura(); if (frontirdatai>=frontirdata+50) atras();
\nservo.write(izquierdo,adelantei);
\nservo.write(derecho,adelanted);<\/p>\n
}<\/p>\n
void detiene() \/\/accion de detenerse
\n{
\n\/\/detiene marcha
\nservo.write(izquierdo,stopi);
\nservo.write(derecho,stopd);
\ndelay(2000);
\nlectura();
\nif (topirdatai>=topirdata+50) detiene();
\nservo.write(izquierdo,adelantei);
\nservo.write(derecho,adelanted);<\/p>\n
}<\/p>\n
void setup()
\n{
\nSerial.begin(9600); \/\/serial para debug, puede quitarse
\n\/\/pero deben quitarse todo lo relacionado
\nservo.attach(0); \/\/servo izquierdo
\nservo.attach(1); \/\/servo derecho
\n\/\/leemos los valores y los guardamos en variables iniciales
\n\/\/para poder comparar y ademas tener un rendimiento optimo
\n\/\/en todas las condiciones de luz.
\n\/\/ya que permite medir la diferencia y no solo una medida x
\nlectura();
\ntopirdatai=topirdata;
\nbottonirdatai=bottonirdata;
\nfrontirdatai=frontirdata;
\n}<\/p>\n
void loop()
\n{
\n\/\/para debug imprimimos los valores en el serial
\nSerial.printf(\u00abtopirdata = %d \u00ab, topirdata);
\nSerial.printf(\u00abbottonirdata = %d \u00ab, bottonirdata);
\nSerial.printf(\u00abfrontirdata = %d\\r\\n\u00bb, frontirdata);
\n\/\/verificamos que las diferencias no sean muy grandes
\n\/\/para asi evitar que este cambiando de direccion con cualquier
\n\/\/minima variaci\u00f3n.
\nif (topirdatai>=topirdata+50) detiene(); \/\/detiene si detecta diferencias en el sensor superior
\nif (frontirdatai>=frontirdata+50) atras(); \/\/atras y cambia de sentido si detecta diferencias en el sensor frontal
\nif (bottonirdatai<=bottonirdata-100) caida(); \/\/atras y cambia de sentido si detecta diferencias en el sensor de terreno
\ndelay(100);
\nlectura(); \/\/ordena leer nuevamente los sensores
\n}<\/p>\n
[\/sourcecode]<\/p>\n
\n
\n","protected":false},"excerpt":{"rendered":"
Como hace tiempo que mi nena me incha con el tema de tener una mascota… y como yo no le pienso cumplir el capricho… se…<\/p>\n","protected":false},"author":2,"featured_media":505,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[3],"tags":[],"_links":{"self":[{"href":"https:\/\/pinguino.walii.es\/index.php?rest_route=\/wp\/v2\/posts\/501"}],"collection":[{"href":"https:\/\/pinguino.walii.es\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pinguino.walii.es\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/pinguino.walii.es\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/pinguino.walii.es\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=501"}],"version-history":[{"count":5,"href":"https:\/\/pinguino.walii.es\/index.php?rest_route=\/wp\/v2\/posts\/501\/revisions"}],"predecessor-version":[{"id":807,"href":"https:\/\/pinguino.walii.es\/index.php?rest_route=\/wp\/v2\/posts\/501\/revisions\/807"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/pinguino.walii.es\/index.php?rest_route=\/wp\/v2\/media\/505"}],"wp:attachment":[{"href":"https:\/\/pinguino.walii.es\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=501"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pinguino.walii.es\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=501"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pinguino.walii.es\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=501"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}