Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Riojas

#21
Que tal underc0ders!!!
Ahora vengo a mostrarles una forma muy sencilla de usar el Modulo RFID MC522 junto con Arduino.

El resultado final sera como el que se muestra en el siguiente video:



Para ver el tutorial completo visita el blog de underc0de pinchando el siguiente link:
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Los invito a contarme su experiencia al realizar esta practica así como dejar sus dudas y sugerencias en los comentarios acerca de que les pareció el post

Tambien pueden visitarnos en nuestro grupo de Facebook dando clic a el siguiente enlace:
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login


#22
Que hay de nuevo gente!!!
Les traigo esta practica en la cual haremos uso de Python para enviarnos alertas de E-mail cuando un sensor de presencia(PIR) sea activado.

Manos a la obra!!!

Materiales necesarios:
1 Arduino UNO.
1 Sensor PIR.
Cables para conexión.


Enseguida les dejo el diagrama de conexión.


En esta ocasión también haremos usa de la librería "serial" que se encarga de la comunicación entre Python y Arduino (les dejare los enlaces al final).

A continuacion les dejo el codigo de Python explicado:

Código: python
# Importamos las librerias
import time
import serial
import smtplib
import mimetypes

# Importamos los módulos necesarios
from email.MIMEText import MIMEText

#Declaramos las variables de el emisor y el receptor de el correo a enviar.
emisor = "[email protected]"
receptor = "[email protected]"

#Creamos el objeto "ser" para comunicarnos con Arduino, cambiar el puerto COM por el de tu arduino
ser = serial.Serial('COM9', 9600)

#Definimos la funciona que se encargara de mandar el mail   
def envia_email():
   
    # Autenticamos
    mailServer = smtplib.SMTP('smtp.gmail.com',587)
    mailServer.ehlo()
    mailServer.starttls()
    mailServer.ehlo()
    mailServer.login(emisor,"contraseñadelemisor")
                               
    # Enviamos el mensaje
    mailServer.sendmail(emisor,receptor,mensaje.as_string())
    print("Mensaje Enviado!")

    # Cerramos conexión
    mailServer.close()


while True:
    lectura = ser.readline()
    print(lectura)
    #Este If se encarga de leer lo que entra por el puerto serie
    #Si la primer letra de lo que contiene el puerto seria es una "M" se cumple la condicion
    if lectura[0] == 'M' :
        #Declaramos las variables fecha y hora para enviarlas en el mail
        fecha = time.strftime("%d/%m/%y")
        hora = time.strftime("%H:%M:%S")
        # Configuracion del mensaje
        mensaje = MIMEText("Se ha activado el sensor PIR el: "+ fecha + " a las: " + hora)
        mensaje['From']=emisor
        mensaje['To']=receptor
        mensaje['Subject']="Sensor PIR Activado!!!"
        #Se envia el mail
        envia_email()
    time.sleep(0.5)



Hay que tener en cuenta que debemos cambiar el numero del puerto COM por el que este usando tu Arduino en ese momento.

Ahora vamos con el código de Arduino.

Código: c
//Definimos el pin en el que conectaremos la salido de el PIR
int pirPin = 8;

int minSecsBetweenEmails = 60; // 1 min. Tiempo entre lecturas de el sensor, esto para evitar que se envien muchos correos.

long lastSend = -minSecsBetweenEmails * 1000l;


void setup()
{
  pinMode(pirPin, INPUT); //Definimos el pin de el sensor como una entrada
  Serial.begin(9600); //Inicializamos la comunicacion serial. Debe ser la misma que en Python
}

void loop()
{
  long now = millis();
  if (digitalRead(pirPin) == HIGH)
  {
    if (now > (lastSend + minSecsBetweenEmails * 1000l))
    {
      Serial.println("MOVIMIENTO"); //Si se detecte movimiento enviamos este mensaje por el puerto Serie
      lastSend = now;
    }
    else
    {
      Serial.println("Espere..."); //Se enviara este mensaje mientras no se active el sensor
    }
  }
  delay(500);
}


Y este es el resultado de el mail que se envía:


Hasta aquí esta sencilla practica, espero les guste y atentos a los próximos aportes ya que estaremos añadiendo la función de enviar una foto de el "intruso" utilizando openCV

Saludos colegas!!!

Links de descargas:
Python 2.7
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Libreria pySerial
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

#23
Hola, Googleando un poco encontre esta web
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
Es un decompiladro online, que en realidad usa "Apktool" para decompilar las aplicaciones o si lo prefieres puedes descargarte el mismo Apktool desde este sitio.
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
Espero te sirva.
Saludos
#24

Que tal underc0ders!!!
Hoy les vengo a presentar otra maravillosa herramienta con la que podemos hacer proyectos no solo para Arduino, si no tambien para Raspberry Pi.
Se trata de
Blynk.


Citar"Blynk es una plataforma para iOS y Android con la cual podrás controlar Arduino y Raspberry Pi a través de Internet.

Es un panel de control digital donde puedes crear una interfaz gráfica para tu proyecto simplemente arrastrando y soltando widgets.

Es realmente fácil de configurar todo y empezarás a jugar en menos de 5 minutos.

Blynk no está ligado a algún tablero o escudo específico. En su lugar, es compatible con el hardware de su elección. Ya sea que su Arduino o Raspberry Pi esté conectado a Internet a través de Wi-Fi, Ethernet o este nuevo chip ESP8266, Blynk lo pondrá en línea y estará listo para la Internet de sus Cosas.


En esta ocasión trabajare con un Ethernet Shield para hacer una pequeña prueba del funcionamiento de esta herramienta, pero si entran a su pagina oficial se darán cuenta que tiene muchísimas opciones para conectar nuestro Arduino. Cabe señalar que usare un dispositivo Android pero para iOS es exactamente igual.

Primero nos descargamos la app de Blynk desde la Play Store(todos los enlaces utilizados en este post se los dejare al final del mismo) la instalamos y nos aparecerá la pantalla de login(1er imagen).
Tendremos que crear una nueva cuenta de Blynk o bien ingresar con Facebook. Después de loguearnos ya estaremos en la pantalla principal(2da imagen).
Al dar clic a "Create New Project" no preguntara nombre del proyecto, con que tipo de placa trabajaremos y el tipo de conexión. En este caso lo llamare "Prueba 1", utilizare Arduino UNO con una conexión Ethernet por medio de el Shield(3era imagen). Al dar clic al botón "Create" nos enviara un "Token" a nuestro correo el cual usaremos posteriormente.
   

Ahora daremos clic a el "+" que esta arriba a la derecha y se desplegara una lista de widgets que podemos elegir, también verán una "batería" y el total de "energía" que tenemos, esta se nos ira descontando según el valor de cada widget que agreguemos. También tenemos la opcion de comprar mas "energía" pinchando el botón "+ Add".

Si despliegan la lista hacia abajo veran que hay muchos widgets muy interesantes, en este caso solo usaremos un botón, basta con darle clic al widget y se agregara a la pantalla de la aplicación.
Al dar clic al botón que acabamos de agregar se nos mostraran las opciones de configuración como: Nombre, color, cuales pines de Arduino utilizaremos, si queremos que sea tipo botón o switch y el texto que se mostrara cuando este activado o desactivado. En mi caso lo configurare de la siguiente manera:


Bien, ya tenemos configurado la parte de Blynk ahora iremos con Arduino.
Vamos a entrar a la pagina de ejemplos de Blynk y solo tendremos que configurar los parámetros de el lado izquierdo como se muestra a continuación:

En la parte de Auth Token tenemos que pegar el Token que nos llego a nuestro correo. Luego de esto le damos a "Copy Example" y pegamos el código en un nuevo Sketch de Arduino.

Cargamos el código a la placa y cuando termine de cargar abrimos el monitor serial, si todo va bien veremos esto:


Ya solo nos resta darle a el botón "Play" en nuestra aplicación de Blynk para que se comunique con Arduino. Aquí un vídeo del resultado...


Hasta aquí este post, y atentos a los próximos. Cualquier duda con gusto sera resuelta.


Pd:El led lo conecte a el Pin 9!!

Links:
Pagina principal de Blynk:
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Ejemplos:
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

App para Android:
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

App para iOS:
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login


[/b]
#25
Bien, lo intentare
Gracias!!
#26
No veo el error en el código que pusiste!!
#27
Hola @You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login.

Estuve buscando y encontre este tutorial, creo que te puede servir.
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
A decir verdad no lo he probado ya que no uso Delphi, pero por lo que vi esta bien explicado.
Saludos.

PD: Te deje privado!!
#28
Listo!!!
Estaba usando el editor grafirco pero no habia actualizado la ruta del compilador a la mas reciente.
Gracias
#29
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
Dejo el source del programa, no tengo el tiempo como para seguir el desarrollo de los controles del formulario.

Aportazo Master!!!
Lo he estado esperando con ansias.
Pero al momento de ejecutar el source del File Pumper me aparece este error.

Podras echarme una mano??
Saludos
#30
Hola, podras pasarme el link de descargar, para probarlo y ver si te puedo ayudar!!
Saludos
#31


Que tal underc0ders!!!
Aqui les traigo la ultima parte de este taller!!!
Manos a la obra.

En esta ocasión vamos a agregar sonido al juego, así como un texto que nos diga "Game Over" al perder.

Primero agregaremos un sonido a el objeto "barra1", el que yo utilice lo pueden descargar de aquí: You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
Para agregar sonidos solo tenemos que ir a la pestaña "Sonidos" de el objeto, en este caso "pelota" y arrastrar el archivo(solo acepta WAV).

Ahora agregaremos un bloque llamado "tocar sonido" a los que ya teníamos. Para quedar así:

Esto hará que el sonido se reproduzca cada vez que la pelota toque la barra.

Bien, ahora haremos que nos muestre el texto "Game Over" cada vez que perdamos, y también reproducirá un sonido de "Game Over", el cual pueden descargar de aquí: You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
Para hacer esto tendremos que dibujar un nuevo objeto, de la misma forma que hemos hecho los anteriores, esta vez solo sera un pequeño punto de el mismo color que el fondo de la pantalla(negro) para que no se vea mientras el juego esta en curso y solo se muestre el texto cuando perdamos. Tambien agregamos dos bloques mas en el objeto "pelota" para quedar asi:

Lo que hará es enviar un "mensaje" a otro objeto de el juego, en este caso sera a el nuevo objeto que acabamos de agregar y al recibirlo ejecutara las ordenes que le daremos a continuación:

Con estos bloques le ordenamos que al presionar "banderita" borre el texto anterior, se mueva a las coordenadas señaladas y fije el color en el que se mostrara el texto, y al recibir el mensaje "gameover" que le mandamos desde el otro objeto escribirá "Game Over!" en la pantalla y seguido reproducirá el sonido.

Con este post llegamos a el final de este taller, obviamente a esto se le pueden agregar muchas cosas mas como puntuación o niveles, se los dejo a su imaginación.

Hasta la próxima underc0ders!!!

Aquí los posts anteriores de este Taller:
Presentación.
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
"Hola Mundo".
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
Parte 1.
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
Parte 2.
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
#32
Dudas y pedidos generales / Re:Programación Java
Marzo 11, 2017, 12:41:00 PM
Hola, @You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login.
Te recomiendo insertar el código dentro del mismo post utilizando el botón "Codigo" que se encuentra en la barra de herramientas, así sera mas fácil de visualizarlo sin tener que salir de esta pantalla, también podremos copiarlo y pegarlo para hacer pruebas de por que no funciona!!!
Código: java
Ejemplo


Respecto a el "error" déjame lo testeo y te digo.

Saludos!!
#33
Presentaciones y cumpleaños / Re:Saludos a todos
Marzo 10, 2017, 12:31:57 AM
Bienvenido.!!!!!!!!
#34
Arduino - Raspberry PI / Visualino [Presentación]
Marzo 09, 2017, 06:54:08 PM


Que tal de nuevo underc0ders!!!
En este post les vengo a presentar una herramienta muy buena que me encontre por la WEB.
Se llama: Visualino.

Visualino es un entorno de programación visual para Arduino
Es Software libre, con código nativo y de muy fácil uso.

Para obtenerlo visiten este link:
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Esta disponible para : Mac, Windows, Ubuntu y hasta para Raspberry Pi
Solo tienen que descargar el que se acomode a su Sistema Operativo, descomprimir el .ZIP y ejecutar "Visualino.exe".(deben de tener el IDE de Arduino Instalado).

Al ejecutarlo les aparecerá la ventana principal:

Si han trabajado con Scratch4Arduino, Snap4Arduino o App Inventor verán que tiene una gran similitud con entornos gráficos.

Solo tienen que dar clic a el botón de "Preferencias" y asegurarse que la ruta del ejecutable de Arduino sea la correcta(si dejaron la ruta por default al instalar Arduino no muevan nada).


Aquí mismo puede cambiar el idioma. Están disponible los siguientes:
Ingles (Reino Unido)
Catalán (España)
Italiano (Italia)
Polaco (Polonia)
Portugués (Brasil)
Portugués (Portugal)
Ruso (Rusia)

Bien, ahora les muestro las secciones de la aplicación para después hacer un pequeño ejemplo.


Ahora si, a lo interesante!!!
Vamos a hacer una practica sencilla en la que leeremos la distancia a través de un sensor Ultrasonico.

Materiales necesarios:
1 Arduino UNO.
1 Sensor Ultrasonico HC-SR04.
1 Protoboard.
Cables para conexión.

Aquí la conexión que es muy fácil.


Con unos cuantos bloques lograremos leer la distancia por medio de el sensor ultrasonico, aquí se los muestro:

Como pueden observar en la sección de código fuente se ha generado automáticamente el código, esto se actualiza cada que coloquemos un nuevo bloque en el área de programación, este código lo pueden copiar y pegar en el IDE de Arduino y funcionara sin problemas.
Solo resta darle clic a el boton "Subir" y si no hay ningún error se cargara el código al Arduino.
Ahora damos clic al botón de el Monitor Serial para ver las mediciones.


Les dejo este enlace en el cual encontraran infinidad de ejemplos hechos con Visualino, excelente para empezar con este entorno de programación.
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Hasta aquí este pequeño aporte, espero les guste.
Saludos underc0ders!!!
#35
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
Holaa Riojas, soy nuevo en este mundillo pero me parece muy interesante, estoy en 4 ESO y estamos con Arduino y el S4

Muy interesante el aporte!!
Un saludo!!

Hola, pasate por este post de Snap4Arduino.
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
#36

Que tal underc0ders!!!
Ahora les traigo este aporte en el que aprenderemos a hacer un "bot" de Telegram que interactue con Arduino. Espero les guste y manos a la obra!!

Materiales necesarios:
1 Arduino UNO.
1 Sensor de Temperatura y Humedad DHT11.
2 Leds cualquier color.
1 Protoboard.
Cables para conexión.

Les dejo la conexión de los componentes en la siguiente imagen:


Lo primero que tenemos que hacer es descargar Telegram. En este link están todas las versiones, para móviles y Desktop.
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
En mi caso usare la aplicación para Windows.

Una vez instalada y que ya se registraron tienen que iniciar una conversación con @BotFather(es como el jefe de todos los Bots) para hacerlo solo tienen que seguir este link You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login o bien buscarlo dentro de sus contactos en Telegram.
Cuando se abra la ventana de conversación tienen que escribir el comando "/start" y así iniciara la conversación con @BotFather. Enseguida les mostrara una lista de comandos.

Ahora enviaremos el comando "/newbot" para empezar a crear el Bot. Después de introducir este comando nos preguntara el nombre y el nickname que aparecerá en los chats, en caso de que ya exista un Bot llamado igual lo dirá y tendremos que elegir otro.
Si todo ha ido bien ya hemos creado nuestro Bot satisfactoriamente.


En el mensaje de respuesta nos dara el "TOKEN" para accesar a nuestro Bot desde la API, hay que guardarlo para su posterior uso.

Bien, dejemos a un lado Telegram para ir a programar Arduino.
El código es muy sencillo, de todas formas se los dejo explicado linea por linea.


Código: c
#include "DHT.h" //Incluimos la libreria DHT para el control de el Sensor DHT 11.

#define PinOutDHT 3 //Definimos el Pin 3 para la lectura de el sensor.
#define TypeDHT DHT11 //Definimos el Tipo de Sensor.
DHT dht(PinOutDHT, TypeDHT); //Cramos un objeto dht con las variables definidas anteriormente.

const int led1=12; //Declaramos la variable led1.
const int led2=2; //Declaramos la variable led2.

unsigned int dato; //Declaramos una variable "dato" en donde se guardaran los valores recibidos desde Python.

void setup() {
  Serial.begin(9600); //Inicializamos la comunicacion Serial a 9600 Baudios
  pinMode(led1,OUTPUT);
  pinMode(led2,OUTPUT); //Definimos los pines de los leds como Salidas
 
}

void loop() {
    while(Serial.available()>0){  //Comprobamos que la comunicacion serial este disponible.
      dato=Serial.read(); //Leemos el puerto serial y guardamos los valores en la variable "dato"
     
      /*En el siguiente codigo se compara el valor de "dato" y segun sea el caso actua de distintas maneras*/
      //Enciende o apaga los leds
        if(dato=='Y')digitalWrite(led1,HIGH);
        if(dato=='N')digitalWrite(led1,LOW);
        if(dato=='E')digitalWrite(led2,HIGH);
        if(dato=='F')digitalWrite(led2,LOW);

      //Manda Temperatura o Humedad segun el caso
        if(dato=='T')Serial.println(int(dht.readTemperature())+String("°C"));
        if(dato=='H')Serial.println(int(dht.readHumidity())+String("%"));
       
    }
 
}



Después de haber cargado el programa a Arduino nos iremos a programar en Python, yo he usado Python 2.7 y corre sin ningun problema.
Aquí los links para descargar las herramientas:
Python : You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
Libreria Telepot: You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Nota: Al ejecutar el código de Python háganlo desde la terminal, asi no les marcara ningun error relacionado con el puerto COM de Arduino.
Nota 2: Antes de ejecutar el código de Python asegúrense de tener cerrado el monitor serial en Arduino.
Aclarados estos puntos les dejo el código en Python.

Código: python
#!/usr/bin/python
import telepot, time, serial, sys
ser = serial.Serial('COM10', 9600)

print('Bot activado.')
print('Esperando comandos...')
   
def handle(msg):

userName = msg['from']['first_name']

content_type, chat_type, chat_id = telepot.glance(msg)

if (content_type == 'text'):
command = msg['text']
print ('Comando obtenido: %s' % command)

if  '/start' in command:
bot.sendMessage(chat_id, "Hola, "+userName+"\n"+"Mi nombre es: BotDuino,Te muestro la lista de comandos que puedo reconocer:"+"\n"
                                        +"/encender_led1"+" -Enciendo el Led 1"+"\n"
                                        +"/apagar_led1"+" -Apago el Led 1"+"\n"
                                        +"/encender_led2"+" -Enciendo el Led 2"+"\n"
                                        +"/apagar_led2"+" -Apago el Led 2"+"\n"
                                        +"/ubicacion"+" -Envio mi ubicacion actual"+"\n"
                                        +"/humedad"+" -Te muestro la Humedad en el ambiente"+"\n"
                                        +"/temperatura"+" -Te muestro la temperatura")

elif '/encender_led1' in command:
ser.write(b'Y')
bot.sendMessage(chat_id, "Led 1 Encendido!")

elif '/apagar_led1' in command:
ser.write(b'N')
bot.sendMessage(chat_id, "Led 1 Apagado!")
       
                elif '/encender_led2' in command:
ser.write(b'E')
bot.sendMessage(chat_id, "Led 2 Encendido!")

elif '/apagar_led2' in command:
ser.write(b'F')
bot.sendMessage(chat_id, "Led 2 Apagado!")

elif '/ubicacion' in command:
                        bot.sendLocation(chat_id, "cambiar por latitud","cambiar por longitud")

elif '/temperatura' in command:
                        ser.write(b'T')
                        linea=ser.readline()
                        bot.sendMessage(chat_id, "Temperatura: " +linea)


                elif '/humedad' in command:
                        ser.write(b'H')
                        linea=ser.readline()
                        bot.sendMessage(chat_id, "Humedad Relativa: " +linea)
else:
                    bot.sendMessage(chat_id, "Lo siento, no reconozco ese comando!")

bot = telepot.Bot('"cambiar por tu TOKEN"')

bot.message_loop(handle)

# Espera por nuevos mensajes
while 1:
time.sleep(20)


Abran una terminal en Windows y ejecuten el script que acabamos de hacer
Código: bash
python "nombreFihero".py

Si no les ha marcado ningún error verán algo como esto:

Este sera nuestro "monitor" en el cual se mostraran los mensajes que mande el usuario a nuestro Bot.

Para iniciar la conversación tenemos que enviar el comando "/start", y nos contestara de esta manera mostrando los comandos a los que puede reaccionar. Así se vera en Telegram y en la terminal:


Aquí un vídeo del resultado:


Cabe señalar que esto es solo el comienzo ya que con este método podrán controlar infinidad de dispositivos en Arduino, como relevadores para prender o apagar dispositivos de 120 v o lo que se les venga a la mente.

Hasta aquí este post, espero les guste y les sea de utilidad.

PD: Muchas gracias a @xcivix o @Panda por mi nueva firma!!!

Hasta el próximo post underc0ders.
[/b]
#37
Gracias @You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login por el aporte.
A probarlo!!!
#38


Que tal queridos underc0ders!!
Aqui la segunda parte de este taller.
Manos a la obra...

Lo primero que haremos sera crear un objeto de la misma forma que creamos la "barra" pero esta vez sera la "pelota". El tamaño es a criterio de cada quien.
Después de haberla creado empezaremos a programarla dando clic en ella y seleccionando los bloques que les muestro a continuación...


Con esto haremos que "al presionar banderita" la pelota se posicione en las coordenadas 0,100 y después se desplace en una dirección al azar entre 120 y 240, esto para evitar que cuando se reinicie el juego la pelota salga siempre en la misma dirección.
Después en el "por siempre"(Ciclo infinito) le indicamos que rebote si esta tocando alguno de los 4 bordes y se desplace 3 pasos, si quieren incrementar o disminuir la velocidad cambien el numero de "pasos".
Seguido de esto viene un ciclo condicional "SI" que se encarga de checar si la pelota esta tocando algún objeto que tengamos dentro de nuestra pantalla de la aplicación, en este caso "barra1", de ser así la pelota se desplazara hacia arriba y hacia un lado al azar.

Si todo ha salido bien nuestro Juego se vera como en el siguiente vídeo:


Si se pudieron dar cuenta al momento de tocar el borde inferior la "pelota" también rebota, pero se supone que deberíamos de perder!!!.
Bien, esto lo solucionamos creando otro "objeto" que sea una linea recta que se extienda desde la esquina inferior izquierda hasta la esquina inferior derecha y este justo debajo de la "barra1".
Les quedara así:


Ahora agregaremos dos bloques mas después del primer bloque "SI", aqui les muestro cuales:


Estos van a ser los encargados de detener("stop todos") todo lo que se este ejecutando en el juego, y así terminara.
La estructura completa tiene que quedar así:


Si no han tenido ningún error el el resultado sera este...


Excelente!!! Hasta aquí esta segunda parte de este Taller. Cualquier duda que tengan no duden en enviarme MP y con mucho gusto la resolvemos!!
Nos vemos en el próximo post.
Saludos underc0ders y...

Felices Códigos!!!

Aquí los posts anteriores de este Taller:
Presentación.
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
"Hola Mundo".
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
Parte 1.
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
[/b]
#39
Otros lenguajes / Re:[Cramel] Consola.cml
Marzo 01, 2017, 11:26:36 AM
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
Les traigo este código el cual te genera una consola, en la que puedes escribir y leer.



Tiene los siguientes métodos:

  • iniciar() - Siempre que ocupemos la consola debemos iniciarla
  • establecerTitulo() - Si queremos cambiar de titulo de la consola
  • escribir() - Escribimos en la misma linea
  • escribirLinea() - Escribimos agregando al final LF (Salto de linea)
  • establecerColor() - Establecemos algunos colores para la fuente y fondo (CONSTANTES)
  • leer() - Leemos el teclado sin agregar el enter
  • pausar() - Terminamos la ejecución de la consola

Tiene los siguientes campos:

  • txt:Cadena - Antes de escribir en la consola, debemos de llenar este campo con lo que queremos escribir
  • txtresultado:Cadena - Aquí se almacena la cadena leida

Y es todo por el momento.

Aquí el código:
Código: text
'APIS para el funcionamiento de la consola'
API GetStdHandle(nStdHandle:Entero):Entero, "Kernel32"
API AllocConsole():Booleano, "Kernel32"
API WriteConsoleA(hConsoleOutput:Entero, Referencia lpBuffer:Cadena, nNumberOfCharsToWrite:Entero, Referencia lpNumberOfCharsWritten:WORD, Referencia lpReserved:Entero):Entero, "Kernel32"
API ReadConsoleA(hConsoleInput:Entero, Referencia lpBuffer:Cadena, nNumberOfCharsToRead:Entero, Referencia lpNumberOfCharsRead:WORD, Referencia lpReserved:Entero):Entero, "Kernel32"
API FreeConsole():Booleano, "Kernel32"
API SetConsoleTitleA(lpConsoleTitle:Cadena):Entero, "Kernel32"
API SetConsoleTextAttribute(hConsoleOutput, wAttributes:Entero):Entero, "Kernel32"
API GetConsoleMode(hConsoleHandle:Entero, Referencia lpMode:WORD):Booleano, "Kernel32"
API SetConsoleMode(hConsoleHandle, dwMode:WORD):Booleano, "Kernel32"

' Consola '
const STD_OUTPUT_HANDLE = -11
const STD_INPUT_HANDLE = -10
const STD_ERROR_HANDLE = -12

' Colores '
Const FOREGROUND_BLUE = &1
Const FOREGROUND_GREEN = &2
Const FOREGROUND_RED = &4
Const FOREGROUND_INTENSITY = &8
Const FOREGROUND_SEARCH = (&10)
Const BACKGROUND_BLUE = &10
Const BACKGROUND_GREEN = &20
Const BACKGROUND_RED = &40
Const BACKGROUND_INTENSITY = &80
Const BACKGROUND_SEARCH = &20

' Console mode flag'
Const ENABLE_ECHO_INPUT = &4
Const ENABLE_PROCESSED_INPUT = &1

'Callback'
Prototipo procsimple():Entero
Prototipo settitle(titulo:Cadena):Entero
Prototipo setattibute(atributos:Entero):Entero

' Nuestro gestor de consola '
Estruct ConsolaEstructura,_
    hEntrada,_
    hSalida:Entero,_
    txt,_
    txtresultado:Cadena,_
    establecerTitulo:settitle,_
    escribir:procsimple,_
    escribirLinea:procsimple,_
    establecerColor:setattibute,_
    leer:procsimple,_
    iniciar:procsimple,_
    pausar:procsimple

' Variables de control '
Var Error:Booleano
Var Consola:ConsolaEstructura
Var consoleVar:WORD

' Iniciamos algunos metodos de nuestra consola '
Error = Falso
Consola.hEntrada = INVALID_HANDLE
Consola.hSalida  = INVALID_HANDLE
Consola.iniciar@ = initConsole@
Consola.establecerTitulo@ = setCTitle@
Consola.escribir@ = writeConsole@
Consola.escribirLinea@ = writeConsoleLine@
Consola.leer@ = readConsole@
Consola.establecerColor@ = establecerAtb@
Consola.pausar@ = pauseConsole@

Proc initConsole():Entero
    AllocConsole()
    Consola.hEntrada = GetStdHandle(STD_INPUT_HANDLE)
    Consola.hSalida = GetStdHandle(STD_OUTPUT_HANDLE)
    Consola.txt = ""
    Consola.txtresultado = ""
FinProc

Proc establecerAtb(atributos:Entero):Entero
    Si check() Entonces
        Resultado = SetConsoleTextAttribute(Consola.hSalida, atributos)
    FinSi
FinProc

Proc setCTitle(titulo:Cadena):Entero
    Si check() Entonces
        Resultado = SetConsoleTitleA(titulo)
    FinSi
FinProc

Proc writeConsole():Entero
    Si check() Entonces
        Var result:Entero
        result = WriteConsoleA(Consola.hSalida, Consola.txt, CadLong(Consola.txt), consoleVar, 0)
        Resultado result
    FinSi
FinProc

Proc writeConsoleLine():Entero
    Si check() Entonces
        Consola.txt = Consola.txt + LF
        Resultado writeConsole()
    FinSi
FinProc

Proc readConsole():Entero NoResultado
    readConsoleLimited(MAX_PATH)
FinProc

Proc readConsoleLimited(limite:Entero):Entero NoResultado
    Si check() Entonces
        Var i:Entero
        Var tecla:Byte
        Var letra:Cadena
        i = 0
        Consola.txtresultado = ""
        Repetir
            tecla = getChar()
            letra = Caracter(tecla)
            Si (i > 0) And (tecla = 8) Entonces
                Consola.txt = "\x08 \x08"
                Consola.escribir()
                Consola.txtresultado = Izquierda(Consola.txtresultado, CadLong(Consola.txtresultado)-1)
            SiNo
                Si tecla <> 13 Entonces
                    Consola.txt = letra
                    Consola.escribir()
                    Consola.txtresultado = Consola.txtresultado + letra
                    i = i + 1
                FinSi
            FinSi
        HastaQue (tecla = 13) or (i = limite)
        Consola.txt = ""
        Consola.escribirLinea()
    FinSi
FinProc

Proc pauseConsole()
    Si check() Entonces
        Var tecla:Byte
        Consola.txt = "Presione una tecla para continuar . . . "
        Consola.escribirLinea()
        tecla = getChar()
        closeConsole()
    FinSi
FinProc

Proc getChar():Byte
    Var char:Cadena
    Var mode:WORD
    GetConsoleMode(Consola.hEntrada, mode)
    SetConsoleMode(Consola.hEntrada, mode and (-1*ENABLE_ECHO_INPUT) and (-1*ENABLE_PROCESSED_INPUT))
    ReadConsoleA(Consola.hEntrada, char, 1, consoleVar, 0)
    SetConsoleMode(Consola.hEntrada, mode)
    Resultado = ASCII(char)
FinProc

Proc closeConsole():Entero
    Si check() Entonces
        CloseHandle(Consola.hEntrada)
        CloseHandle(Consola.hSalida)
        FreeConsole()
    FinSi
FinProc

Proc check():Booleano
    Si (Consola.hEntrada = INVALID_HANDLE) or (Consola.hSalida = INVALID_HANDLE) Entonces
        Si Error = Falso Entonces
            Mensaje("Primero debes iniciar la consola antes de usarla")
        FinSi
        Error = Verdad
        Resultado = Falso
    SiNo
        Resultado = Verdad
    FinSi
FinProc


Y aquí un ejemplo usando Consola.cml

Código: text
Importar "Cramel.cml"
Importar "Consola.cml"

Consola.iniciar()
Consola.establecerTitulo("Consola [Cramel]")
Consola.txt = "Hola, como estas?"
Consola.escribirLinea()
Consola.leer()

Si Consola.txtresultado = "bien" Entonces
    Consola.txt = "Me alegra"
SiNo
    Consola.txt = "Suena mal, que paso?"
FinSi

Consola.escribirLinea()
Consola.txt = "Como te llamas??"
Consola.escribirLinea()
Consola.leer()

Consola.txt = "Hola " + Consola.txtresultado
Consola.escribirLinea()

Var d,suma:Entero

d = 0
Repetir
    suma = suma + d
    Consola.txt = EntCad(suma)
    Consola.escribirLinea()
    d = d+1
HastaQue d = 10

Consola.pausar()


Cualquier sugerencia, o error, comenten.
Excelente!!
En cuanto este frente a un PC lo pruebo y te paso detalles!!

-RIOJAS

#40
@You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login Excelente aporte!!
Lo estuve probando y al momento de querer crear un archivo nuevo me salta este error.


Espero me ayudes a solucionarlo.
Gracias!!