Programación y desarrollo de microcontroladores

raid

#269 Bueno, no tiene una comunidad tan amplia como las rpi por supuesto, pero no está mal el aparatito.
Por $9 merece la pena tenerlo y buscarle su aplicación.

#270 Gracias, me lo miraré y ya os cuento que tal. No me sirve, ya que tengo que pulsar ENTER para enviar la tecla.

tiene que haber algo para leer 1 caracter del buffer de teclado.

Diward

#265 Yo hice algo asi en la universidad.

Lo que tienes que hacer es que cuando ejercutes el script de python te ponga la consolta en modo raw (default esta en modo coocked).
En modo raw lo que hace es mandar cada tecla que pulsas sin necesidad de darle a enter.

En java:

    public static void setRaw() throws IOException {
        String[] cmd = {"/bin/sh", "-c", "stty -echo raw </dev/tty"};
        Runtime.getRuntime().exec(cmd);
    }

public static void unsetRaw() throws IOException {
    String[] cmd = {"/bin/sh", "-c", "stty echo cooked </dev/tty"};
    Runtime.getRuntime().exec(cmd);
}

Lo unico a tener en cuenta es que con cada tecla que pulsas lo que se manda es su secuencia de escape, tendras que ir leyendo caracter a caracter que se envia y decidir si por ejemplo lo que se ha enviando es una fecha segun su secuencia de escape.

En python tienes algo asi como decode_escapes()

1 respuesta
raid

#272 :-/

Lo siento, no sé cómo se hace eso ni a lo que te refieres.

Claro, mi objetivo es el siguiente:
Por un lado conecto el C.H.I.P a un puente H para controlar la tracción y la dirección de un coche teledirigido viejo (del que solo me he quedado la estructura, ruedas y motores).
Por otro lado, yo desde una terminal ssh, ejecutar el programa de python en el C.H.I.P para enviarle los comandos para que el cochecito se mueva.

Teóricamente, en el script de python necesito lo siguiente:

  1. controlar el I/O del GPIO del C.H.I.P lo cual está bien documentado.
  2. posibilidad de crear threads en python (aún no sé cómo hacerlo, pero creo que hay buena documentación para conseguirlo)
  3. algo que yo creía trivial, que es poder capturar pulsaciones de teclado que el thread que se encargue de recibir las ordenes, envie a los motores las señales necesarias para moverse.

Sinceramente, me sorprende que sea tan complicado o que me esté costando tanto poder leer una pulsación de tecla en python.

Otra duda es si esto funcionaría a través de una terminal ssh, o si realmente esa pulsación de tecla la espera por teclado físico y no por tty

Gracias.

1 respuesta
Diward

A lo que me refiero es que cuando tu abres una consola se abre en modo cooked. Esto significa que para que se mande un carácter por la salida estándar tienes que pulsar la tecla y darle al enter.

Si pones la consola en modo raw (seguro que en python puede a hacerse), cada tecla que pulsas se manda por la salida estandard.

Lo único a tener en cuenta es que si mandas una "a" por ejemplo, no se manda la a sino su secuencia de scape.

willy_chaos

Nosotros estamos empezando con el PIC18F4321, ya pasare código de lo que vayamos haciendo.

De momento lo que se aproxima es un controlador de VGA para pintar pantalla

Mewtwo

#273 lo he mirado un poco por arriba pero creo que aqui tienes lo que quieres https://automatetheboringstuff.com/chapter18/

1 respuesta
raid

#276 Uau, eso es muy interesante, pero ... creo que no es lo que busco. Aunque sirve incluso para recibir las entradas que hago de ratón, esto lo logra mediante la interfaz gráfica. O sea, el sistema operativo recibirá los eventos de ratón.

Para mi caso particular, abriré una shell por ssh y allí ejecutaré el programa en python, que permanecerá a la espera (en esa sesión de terminal) de mis pulsaciones de teclado al estilo getch() de C/C++

:-( voy a seguir investigándolo, porque no puede ser tan dificil

(quizá este no es el hilo más adecuado. Voy a plantearlo como pregunta de python en el foro correspondiente)

Edit:

Ok, encontradoooooo. Me he pegado una semana (a ratitos buscando la mierda esta)

import termios, sys, os
TERMIOS = termios

def getkey():
    fd = sys.stdin.fileno()
    old = termios.tcgetattr(fd)
    new = termios.tcgetattr(fd)
    new[3] = new[3] & ~TERMIOS.ICANON & ~TERMIOS.ECHO
    new[6][TERMIOS.VMIN] = 1
    new[6][TERMIOS.VTIME] = 0
    termios.tcsetattr(fd, TERMIOS.TCSANOW, new)
    c = None
    try:
        c = os.read(fd, 1)
    finally:
        termios.tcsetattr(fd, TERMIOS.TCSAFLUSH, old)
    return c

print "Pulsa algo."
while 1:
    print "Tu tecla: " + getkey()
Mewtwo

No se por donde ponerlo , asi que lo pongo aqui , estoy buscando un osciloscopio baratito (>200 euros) y al ser posible transportable , se que los buenos cuestan 300 euros etc , etc .

Pero no es para usar en tecnologias rapidas ni necesito algo con mucha precision , la idea es usarlo en algun taller que doy de arduino y usarlo para señales muy simples en casa como algun i2c o asi

he estado viendo los de este tipo que son los que mas me llaman la atencion:
https://www.amazon.es/osciloscopio-bolsillo-port%C3%A1til-aluminio-anal%C3%B3gicos/dp/B01CTYY84I/ref=sr_1_34?ie=UTF8&qid=1480498194&sr=8-34&keywords=osciloscopio+portatil

Alguna otra recomendacion ?

1 respuesta
Aibehn

#278 En la universidad utilizamos mucho los "picoScope". Hay un montón de modelos de todos los precios y son pequeños. Lo malo es que es un osciloscopio de PC, por lo que para visualizar las señales necesitarías un PC. Aunque creo que para tu presupuesto un osciloscopio de PC es la mejor opción.

He estado mirando los de electrónica con lcds y se van de precio la verdad.

1 respuesta
Mewtwo

#279 fue una de mis opciones uno de usb , mirare que tal se lleva con linux ya que uede ser interesante

Gracias !!

1 respuesta
10 días después
bLero

#280 Nose si sigues buscando scope, pero por 179$ tienes el Analog Discovery II (con descuento educativo).

No solo es osciloscopio digital sino que tambien tiene pins para fuente variable, analizador lógico, generador de señales, etc... en un formato super portable.

1 respuesta
Mewtwo

#281 si aun sigo mirando xD , esto es como comprarse un coche es para toda la vida y tampoco me urge y prefiero estar 100 por cien seguro

Muchas gracias , le echare un ojo al que me has puesto y si veo que es bastante portable cosa que se agradece xD

11 días después
willy_chaos

Placa que se encarga de procesar el juego del ahorcado

15 días después
willy_chaos

Aprovecho para decir que hemos terminado la placa 3 con microcontrolador PIC18F4321

https://www.youtube.com/watch?v=viZmZjm3hyw

https://www.youtube.com/watch?v=bLNrMfJWgXM

1
E

como podría programa un arduino para que comprare dos señales analógicas y si una es diez unidades mayor que la otra haga tal cosa, y si es diez unidades menor otra cosa.
gracias

1 respuesta
B

#285


int sensorPin1 = A1;    
int sensorPin2 = A2; int sensorValue1 = 0;
int sensorValue2 = 0;
int ledPin = 13; void setup() { pinMode(ledPin, OUTPUT); } void loop() { sensorValue1 = analogRead(sensorPin1); sensorValue2 = analogRead(sensorPin2); //Aqui ya tienes los 2 valores analogicos //ya puedes compararlos if (sensorValue1<sensorValue2*10) { //haces lo que sea, encender el led en este caso digitalWrite(ledPin, HIGH); } else { digitalWrite(ledPin, LOW); } }
1 mes después
willy_chaos

En la universidad después de los SSPE estamos comenzando con Microcontroladores (aparte de hacer algo mas que pintar por pantalla)

La placa recibirá texto desde el ordenador usando el puerto serie, y posteriormente lo enviara a una segunda placa mediante módem RFID.

Dependiendo del estado en el que este , los leds actuaran de cierta forma.

  • Sin hacer nada: 2 leds encendidos
  • Cargando mensaje: Haciendo un barrido de los leds (al estilo coche fantastico=
  • Enviando el mensaje por RFID: Barra de progreso con los leds
  • Mensaje enviado por RFID: Blinking a 10Hz
  • Mensaje cargado en el micro: Blinking a 5Hz

Todo esto usando programación cooperativa.

Los leds están conectados al puerto D [7..0] y al E[1..0].

El código del main

spoiler

El código de los leds

spoiler
9 días después
D3S1GN3R

Sabeis de donde sacar informacion sobre una STM32F0 mas allá de la documentación oficial?

¿Que ide recomendais para este tipo de placas?

3 respuestas
portos

#288 Buscando por google he encontrado esto, supongo que lo habrías visto ya:
http://letanphuc.net/2014/12/stm32f0-tutorial-1-preliminary-steps/

El curso ese de edx UTAustinX: UT.6.10x Embedded Systems - Shape The World aunque no sea directamente tu placa te puede valer, puedes hacer los laboratorios pero fijandote bien y adaptando determinadas cosas a tu microcontrolador.

1
Slowbro

#288 En mi opinión todo esfuerzo empleado en aprender y practicar con cosas que lleven micros de ARM es tiempo bien invertido.

Si no te quieres meter en el barro y quieres "arduinizar" tu desarrollo, mbed está curioso para aprender.

1
Aibehn

Comentaros que una asignatura de la universidad estamos viendo programación para FPGA's y DSPICS y tienen una pinta cojonuda estos bichos.

1 respuesta
Diward

Yo estoy haciendo mi tfg con esp8266 y la verdad es que es cojonudo.

portos

#291 Las FPGAs tienen la pega de que el proceso de desarrollo es mucho más arduo y costoso en general y además que la mayoría de herramientas son privativas y caras. Por eso sus aplicaciones son bastante limitadas, y sobretodo se centran en procesado de vídeo y sistemas redundantes (porque permiten realizar tareas de forma real) y sistemas en general que necesitan mucha velocidad y estabilidad. Los DSPIC no los conozco apenas pero si he oído que tienen muy buena pinta.

Mewtwo

#288 create cuenta en la pagina de stm y mirate los webminar y mooc que tienen , usar las herramientas de cube facilitan muchisimo el trabajo y sus workshop son de lo mejor que he asistido

Aunque no usen la f0 las otras son mas o menos similares , aunque hay algun curso online que han hecho con esa

1
7 meses después
plaken

Reflotando esto un poquillo...
Sabéis de algún clon del Pickit que sea fiable? Experiencias?