El paso siguiente es agregar otros números para realizar una "cadena" de llamados.
lunes, 29 de julio de 2019
Discado DTMF con Arduino Parte 2
El paso siguiente es agregar otros números para realizar una "cadena" de llamados.
martes, 23 de julio de 2019
Diseño de Placas PCB
A la hora de realizar nuestros Diseños de Circuitos Impresos es muy importante que nuestro PCBWizard logre representarlo correctamente. Por ello deberemos tener en cuenta dos aspectos fundamentales a la hora de imprimir nuestros Circuitos.
1) Cuando el Diseño de nuestra placa se imprime fuera de la hoja dejando una sola parte de todo el Diseño. Debemos desplazarlo hacia abajo o hacia el costado según sea necesario dentro de la Grilla (Fondo).
2) Cuando no imprime la Escala real que necesitamos debemos verificar que la Grilla (fondo) sea del mismo formato con el que se esta dibujando. (mm o inches).
1) Cuando el Diseño de nuestra placa se imprime fuera de la hoja dejando una sola parte de todo el Diseño. Debemos desplazarlo hacia abajo o hacia el costado según sea necesario dentro de la Grilla (Fondo).
2) Cuando no imprime la Escala real que necesitamos debemos verificar que la Grilla (fondo) sea del mismo formato con el que se esta dibujando. (mm o inches).
lunes, 22 de julio de 2019
Comunicación Full-Duplex con ARDUINO y nRF24L01
INTRODUCCION:
No es mi intensión criticar absolutamente a nadie, pero en mi caso personal me ha ocurrido que muchos explican muy bien dejando sobre entendida muchas cosas (que en mi caso personal) ignoro.
Otro ejemplo ha sido: Explican exclusivamente las líneas determinadas del funcionamiento de “algo” y luego te pasan el video funcionando todo. Cuando yo quiero llevarlo a la práctica no funciona.
Claro falta agregar esto, aquello y lo otro. Es por ese motivo que me gusta hacer y presentar lo poquito que voy aprendiendo para que otro “no pierda un fin de semana”, como yo simplemente porque no vio lo obvio “falta agregar pinMode(5, OUTPUT)”.
Otro ejemplo ha sido: Explican exclusivamente las líneas determinadas del funcionamiento de “algo” y luego te pasan el video funcionando todo. Cuando yo quiero llevarlo a la práctica no funciona.
Claro falta agregar esto, aquello y lo otro. Es por ese motivo que me gusta hacer y presentar lo poquito que voy aprendiendo para que otro “no pierda un fin de semana”, como yo simplemente porque no vio lo obvio “falta agregar pinMode(5, OUTPUT)”.
Cabe aclarar que no critico los modos de enseñanza de los demás, pero al menos podrían hacer el comentario aclaratorio. Ya que siempre nos piden nuestros Like / suscribirse.
TEMA CONCRETO (Sin saraza)
La tarea que tiene el programa SERVIDOR es enviar un número aleatorio “usando millis()” al Esclavo. Por otro lado el Esclavo independientemente de lo que reciba envía un valor fijo “999” al Servidor.
La tarea que tiene el programa SERVIDOR es enviar un número aleatorio “usando millis()” al Esclavo. Por otro lado el Esclavo independientemente de lo que reciba envía un valor fijo “999” al Servidor.
Una vez logres esta comunicación podrás jugar del modo que vos quieras o lo necesites. Los mensajes son independientes sin que haya una clave o tiempo para que uno u otro deba responder.
En este caso particular no necesitaba usar Cadena de caracteres, es por eso que solo podrán trabajar con números.
Las conexiones están por todas partes, pero en mi caso solo me quiero dedicar a dejarte un Sketch/Programa/Aplicación. (Inspirado en la explicación de Prometec que me enseño mucho).
SERVIDOR / MAESTRO
// MAESTRO.ino
// MAESTRO.ino
// Creo que no hace falta usar para este ejemplo.
// #include <SPI.h>
// *******************
#include <nRF24L01.h>
#include <RF24.h>
// #include <SPI.h>
// *******************
#include <nRF24L01.h>
#include <RF24.h>
RF24 radio(9,10); // Rx~ y Tx~
const uint8_t pipes[2] = { 0xF0F0F0F0E1LL, 1 };
const uint8_t pipes[2] = { 0xF0F0F0F0E1LL, 1 };
void setup(void) {
pinMode(10, OUTPUT);
pinMode(10, OUTPUT);
Serial.begin(9600);
radio.begin();
radio.begin();
radio.setRetries(15,15); // Maximos reintentos
radio.openWritingPipe(pipes[0]);
radio.openReadingPipe(1,pipes[0]);
}
radio.openWritingPipe(pipes[0]);
radio.openReadingPipe(1,pipes[0]);
}
void loop(void) {
delay(2500); // Solo sirve para no desbordar el Visor Serial
// Paramos la escucha para poder hablar
radio.stopListening();
unsigned long Numero = millis();
Serial.print("Mensaje Enviado ");
Serial.println(Numero);
bool ok = radio.write( &Numero, sizeof(unsigned long) );
if (ok){
Serial.println("ok...");
}else{
Serial.println("SERVIDOR:No pude enviar mi NRO.");
}
delay(2500); // Solo sirve para no desbordar el Visor Serial
// Paramos la escucha para poder hablar
radio.stopListening();
unsigned long Numero = millis();
Serial.print("Mensaje Enviado ");
Serial.println(Numero);
bool ok = radio.write( &Numero, sizeof(unsigned long) );
if (ok){
Serial.println("ok...");
}else{
Serial.println("SERVIDOR:No pude enviar mi NRO.");
}
// Volvemos a escuchar al Esclavo
radio.startListening();
if ( radio.available()){
int AhoraEl;
radio.read( &AhoraEl, sizeof(int) );
if (AhoraEl != 0){
Serial.print("Recibi del Esclavo ");
Serial.println(AhoraEl);
}
}
}
radio.startListening();
if ( radio.available()){
int AhoraEl;
radio.read( &AhoraEl, sizeof(int) );
if (AhoraEl != 0){
Serial.print("Recibi del Esclavo ");
Serial.println(AhoraEl);
}
}
}
ESCLAVO
[code]
// ESCLAVO.ino
// Creo que no hace falta usar para este ejemplo.
// #include <SPI.h>
// *******************
#include <nRF24L01.h>
#include <RF24.h>
// #include <SPI.h>
// *******************
#include <nRF24L01.h>
#include <RF24.h>
RF24 radio(9,10); // Rx~ / Tx~
const uint8_t pipes[2] = { 0xF0F0F0F0E1LL, 2 };
const uint8_t pipes[2] = { 0xF0F0F0F0E1LL, 2 };
void setup(void) {
pinMode(10, OUTPUT);
pinMode(10, OUTPUT);
Serial.begin(9600);
radio.begin();
radio.begin();
radio.setRetries(15,15);
radio.openWritingPipe(pipes[0]);
radio.openReadingPipe(1,pipes[0]);
}
radio.openWritingPipe(pipes[0]);
radio.openReadingPipe(1,pipes[0]);
}
void loop(void) {
// Escuchamos al Servidor
radio.startListening();
unsigned long ElServidor = 0;
radio.read( &ElServidor, sizeof(unsigned long) );
delay(50);
if (ElServidor !=0) {
Serial.print("Numero Recibido del Servidor = ");
Serial.println(ElServidor);
}
if ( radio.available() ) {
// Dejamos de escuchar para poder hablar
radio.stopListening();
int AhoraYo = 999;
Serial.print("Enviando Mensaje ");
Serial.println(AhoraYo);
bool ok = radio.write( &AhoraYo, sizeof(int) );
delay(50);
radio.startListening(); // Redundancia
if (ok){
Serial.println("ok...");
}else{
Serial.println("ESCLAVO:No pude enviar el 999");
}
}
}
// Escuchamos al Servidor
radio.startListening();
unsigned long ElServidor = 0;
radio.read( &ElServidor, sizeof(unsigned long) );
delay(50);
if (ElServidor !=0) {
Serial.print("Numero Recibido del Servidor = ");
Serial.println(ElServidor);
}
if ( radio.available() ) {
// Dejamos de escuchar para poder hablar
radio.stopListening();
int AhoraYo = 999;
Serial.print("Enviando Mensaje ");
Serial.println(AhoraYo);
bool ok = radio.write( &AhoraYo, sizeof(int) );
delay(50);
radio.startListening(); // Redundancia
if (ok){
Serial.println("ok...");
}else{
Serial.println("ESCLAVO:No pude enviar el 999");
}
}
}
Discado DTMF con Arduino
Con esta aplicación he logrado llamar a un Nr. de teléfono desde mi Arduino por medio de una Línea Telefónica Fija.
String NroTel = "15999999"; // el numero de telefono para marcar
int numero = NroTel.length();
const byte tono1Pin = 10; // pin para tono 1 ~ 10
const byte tono2Pin = 11; // pin para tono 2 ~ 11
int DTMF[13][2]={
{941,1336}, // frec. p/tecla tono 0
{697,1209}, // frec. p/tecla tono 1
{697,1336}, // frec. p/tecla tono 2
{697,1477}, // frec. p/tecla tono 3
{770,1209}, // frec. p/tecla tono 4
{770,1336}, // frec. p/tecla tono 5
{770,1477}, // frec. p/tecla tono 6
{852,1209}, // frec. p/tecla tono 7
{852,1336}, // frec. p/tecla tono 8
{852,1477}, // frec. p/tecla tono 9
{941,1209}, // frec. p/tecla tono *
{941,1477}, // frec. p/tecla tono #
{0,0} // pausa
};
void setup() {
Serial.begin(9600);
Serial.print("Inciando Proceso");
pinMode(6, INPUT); digitalWrite(6, LOW); // Colgado/Descolgado
pinMode(7, INPUT); digitalWrite(7, LOW); // Tecla Tonos
pinMode(tono1Pin,OUTPUT); // Output Tono 1 [D10]
pinMode(tono2Pin,OUTPUT); // Output Tono 2 [D11]
pinMode(12,OUTPUT); digitalWrite(12, LOW);// Led Testigo DTMF
}
void loop() {
if (digitalRead(7) == HIGH){
Serial.println("Discado <Por medio de Tonos DTMF>: ");
Serial.print("Numero: ");
for(int i = 0; i < numero; i++) {
char x = NroTel.charAt(i);
int digito = String(x).toInt();
// Disco el digito del Nro Telefonico
Serial.print(digito);
byte digit = digito;
boolean tono1state = false;
boolean tono2state = false;
unsigned long tono1delay = (500000/DTMF[digit][0])-10;
unsigned long tono2delay = (500000/DTMF[digit][1])-10;
unsigned long tono1timer = micros();
unsigned long tono2timer = micros();
// Para la duracion del tiempo de un solo tono
unsigned long timer = millis();
if(digit==12) { delay(1000); } // un segundo retraso si el digito es 12
digitalWrite(12,HIGH); // Led Testigo
while(millis() - timer < 100) {
if(micros()-tono1timer>tono1delay) {
tono1timer=micros(); // Reset restablecer el temporizador del timer
tono1state=!tono1state; // Alternar estado del tono 1
digitalWrite(tono1Pin, tono1state);
}
if(micros()-tono2timer>tono2delay) {
tono2timer=micros(); // reset restablecer el Temporizador
tono2state=!tono2state; // alternar estado del tono2estado
digitalWrite(tono2Pin, tono2state);
}
}
digitalWrite(12,LOW); // Led Testigo
digitalWrite(tono1Pin,LOW);
digitalWrite(tono2Pin,LOW);
delay(150); // 100ms pausa entre los tonos
}
Serial.println(" ");
}
}
String NroTel = "15999999"; // el numero de telefono para marcar
int numero = NroTel.length();
const byte tono1Pin = 10; // pin para tono 1 ~ 10
const byte tono2Pin = 11; // pin para tono 2 ~ 11
int DTMF[13][2]={
{941,1336}, // frec. p/tecla tono 0
{697,1209}, // frec. p/tecla tono 1
{697,1336}, // frec. p/tecla tono 2
{697,1477}, // frec. p/tecla tono 3
{770,1209}, // frec. p/tecla tono 4
{770,1336}, // frec. p/tecla tono 5
{770,1477}, // frec. p/tecla tono 6
{852,1209}, // frec. p/tecla tono 7
{852,1336}, // frec. p/tecla tono 8
{852,1477}, // frec. p/tecla tono 9
{941,1209}, // frec. p/tecla tono *
{941,1477}, // frec. p/tecla tono #
{0,0} // pausa
};
void setup() {
Serial.begin(9600);
Serial.print("Inciando Proceso");
pinMode(6, INPUT); digitalWrite(6, LOW); // Colgado/Descolgado
pinMode(7, INPUT); digitalWrite(7, LOW); // Tecla Tonos
pinMode(tono1Pin,OUTPUT); // Output Tono 1 [D10]
pinMode(tono2Pin,OUTPUT); // Output Tono 2 [D11]
pinMode(12,OUTPUT); digitalWrite(12, LOW);// Led Testigo DTMF
}
void loop() {
if (digitalRead(7) == HIGH){
Serial.println("Discado <Por medio de Tonos DTMF>: ");
Serial.print("Numero: ");
for(int i = 0; i < numero; i++) {
char x = NroTel.charAt(i);
int digito = String(x).toInt();
// Disco el digito del Nro Telefonico
Serial.print(digito);
byte digit = digito;
boolean tono1state = false;
boolean tono2state = false;
unsigned long tono1delay = (500000/DTMF[digit][0])-10;
unsigned long tono2delay = (500000/DTMF[digit][1])-10;
unsigned long tono1timer = micros();
unsigned long tono2timer = micros();
// Para la duracion del tiempo de un solo tono
unsigned long timer = millis();
if(digit==12) { delay(1000); } // un segundo retraso si el digito es 12
digitalWrite(12,HIGH); // Led Testigo
while(millis() - timer < 100) {
if(micros()-tono1timer>tono1delay) {
tono1timer=micros(); // Reset restablecer el temporizador del timer
tono1state=!tono1state; // Alternar estado del tono 1
digitalWrite(tono1Pin, tono1state);
}
if(micros()-tono2timer>tono2delay) {
tono2timer=micros(); // reset restablecer el Temporizador
tono2state=!tono2state; // alternar estado del tono2estado
digitalWrite(tono2Pin, tono2state);
}
}
digitalWrite(12,LOW); // Led Testigo
digitalWrite(tono1Pin,LOW);
digitalWrite(tono2Pin,LOW);
delay(150); // 100ms pausa entre los tonos
}
Serial.println(" ");
}
}
domingo, 11 de diciembre de 2016
Arduino Bluetooth y Android Studio (1/2)
Comunicación de ARDUINO con SMARTPHONE via Bluetooth
INTRODUCCIÓN:
Además de las desiciones, esperas (para recibir mis compras) y pequeñas pruebas de cada uno de los componentes y luego de pasar por muchas luchas con los Microprocesadores (Caso: PIC F18-XXX).
Junté todo lo aprendido a golpes y preguntas sin respuestas claras (para mi poco conocimiento) en la Web y ya no recuerdo de que modo y como llegué a conocer el mundo ARDUINO.
fue esto lo que terminó de hacerme sentir realmente útil frente a este nuevo mundo de la Electrónica Digital.
Fue así que terminé de comprender y encontrar todas las respuestas que me hacía detrás de la compra de un simple módulo que me permitía hacer y aplicar muchisimas aplicaciones. Muchas de ellas (inimaginables para mi) y que luego de unos días lograba concretar.
Lo que veremos en este Post no es otra cosa que lo explicado en mil y una formas distintas, lo que nos muestran en videos sin decirnos como lo lograron, lo que explican y explican mareandonos llevándonos de un lado para el otro. Diciendonos lo sencillo que es hacer y "MANOS A LA OBRA".
Pero que al final de todo esto ¡NADA FUNCIONA!
Claro Nada funciona porque omitieron explicar detalles creyendo que ya lo sabemos, o porque simplemente consideraron que no hacía falta aclarar o explicar.
Bien de una cosa te juro y aseguro, esto esta hecho para nosotros, los que necesitamos que nos ayuden a ¡ARRANCAR! para que a partir de esto y cuando queramos modificarlo y no funciones comencemos a aprender de verdad. Bueno, ahora como dicen TODOS!!! Manos a la OBRA!.
HARDWARE: Para esta comunicación hemos de usar:
Placa Arduino UNO, NANO, MEGA.
Módulo Bluetooth HC-05
Led colores Azul y Rojo
Sensor DHT-11
ProtoBoard con 8 o 10 Cables para conectar cada múdulo con nuestro Arduino.
SOFTWARE:
Arduino con su editor (.INO)
Android Studio para la realización de la Aplicación (.APK)
Desarrollo de todo
Este código de Arduino permite que con mi Smartphone via Bluetooth pueda:
- Enviarle un texto. Este puede ser una clave de acceso por ejemplo.
- Presionar Tecla Led ON y Tecla OFF para Encender y Apagar un Led de color Azul.
- Por medio de una Barra de Corrimiento Enciendo, Apago y le doy mayor o menor densidad a un Led de color Rojo.
- Presiono una Tecla de nombre Temperatura y me envía la Temp. y Humedad captada por el Sensor DHT-11.
Codigo del Arduino:
// Creado el 11/12/2016 Combinado.INO // Permite Encender/Apagar LED Azul // Controla LED Rojo con PWN // Informa la Temperatura y Humedad con DHT11 #include#include SoftwareSerial BTxT(10, 11); // Crea nueva conexion- Pin10(RX) a TX y Pin11(TX) a RX /*-----( Declaro Variables )-----*/ dht DHT; #define DHT_PIN 3 String Temx; // Variable que contiene Temperatura String Humx; // Variable que contiene Humedad String Mensaje; // Variable de cadena de caracteres para el mensaje String DigitoEnvio; // La libreria Envia una cadena de a un caracter por vez int Bandera; // Bandera de Recepción de mensajes void setup() { Serial.begin(9600); // Iniciamos el puerto que esta conectado al PC a 9600 Baudios BTxT.begin(9600); // Iniciamos el puerto nuevo Serial_2 a 9600 Baudios Serial.println("PROGRAMA Led Azul y Rojo con Sensor DHT11 para Tolba Con Bluetooth"); Serial.println(); pinMode(10, INPUT); // RxD Recepcion pinMode(11, OUTPUT); // TxD Transmicion pinMode(13, OUTPUT); // Configura Pin 13 como Salida pinMode(5, OUTPUT); // Configura Pin 05 como Salida PWN pinMode(3, OUTPUT); // Configura Pin 03 como Salida Temperatura/Humedad } void loop() { vuelta: Mensaje = ""; // Preparamos el mensaje ha recibir hacia el PC Bandera = 0; // Recepcion de mensajes // Mientras que lleguen caracteres por el puerto BTxT (serial_2) while (BTxT.available()) { char c = BTxT.read(); // Lee los caracteres uno a uno con la variable c delay(10); Mensaje += c; // Almacena la suma de caracteres en el mensaje Bandera = 1; } if (Bandera == 1) { Mensaje.trim(); Serial.println("Hemos recibido un Mensaje: ["+Mensaje+"]"); } else { goto vuelta; } if (Mensaje == "A" || Mensaje == "B") { Serial.println("Recibimos esta Orden: "+Mensaje); if (Mensaje == "A"){ digitalWrite(13,1); // Enciende LED en Pin 13 DigitoEnvio = "A~"; BTxT.println(DigitoEnvio); } else { digitalWrite(13,0); // Apaga LED en Pin 13 DigitoEnvio = "B~"; BTxT.println(DigitoEnvio); } delay(10); Serial.println("Respuesta: " + DigitoEnvio); goto vuelta; } if (Mensaje == "TH"){ Tolvas(); Serial.println("Recibimos este Texto "+Mensaje); delay(100); BTxT.println("TH-"+Temx+"-"+Humx+"~"); goto vuelta; } if (Mensaje.substring(0,3) == "TXT"){ int desde = 4; int hasta = Mensaje.length(); Mensaje = Mensaje.substring(desde, hasta); Serial.println("Recibimos este Texto "+Mensaje); BTxT.println("Enviaste "+Mensaje+"~"); goto vuelta; } if ((Mensaje.toInt() >= 0) && (Mensaje.toInt() < 256)) { Serial.println("Recibimos este Numero: "+Mensaje); if (Mensaje.toInt() < 65){ analogWrite(5,0); BTxT.println("Led Rojo OFF~"); } else { analogWrite(5, Mensaje.toInt()); // Esta linea molesta más de lo que sirve // BTxT.println(Mensaje+"~"); } delay(10); Serial.println("PWM Recibido ["+Mensaje+"]"); } } void Tolvas(){ int chk = DHT.read11(DHT_PIN); delay (100); chk = DHT.read11(DHT_PIN); delay (1000); switch (chk) { case DHTLIB_OK: Serial.print("OK \t"); break; case DHTLIB_ERROR_CHECKSUM: Serial.print("Error en el Checksum \t"); break; case DHTLIB_ERROR_TIMEOUT: Serial.print("Error Tiempo de Salida \t"); break; case DHTLIB_ERROR_CONNECT: Serial.print("Error de Coneccion \t"); break; case DHTLIB_ERROR_ACK_L: Serial.print("Error Ack Bajo (Low)/Falta 5v \t"); break; case DHTLIB_ERROR_ACK_H: Serial.print("Error Ack Alto (High) \t"); break; default: Serial.print("Error Desconocido \t"); break; } // DISPLAY DATA Temx = ""; Humx = ""; Serial.println(DHT.temperature, 1); Serial.println(DHT.humidity, 1); Temx = DHT.temperature; Humx = DHT.humidity; delay (100); return Temx, Humx; }
OBSERVACIONES:
No tengo duda alguna, que este codigo luego de analizarlo, podremos conincidir que sobran muchas cosas y que se podía hacer más "técnico" de otros modos y con otros comandos. No es el objetivo de ello. Este programa primario enseña como se comporta cada componente y le dice a TODOS que esta pasando a cada momento. Esa fue la necesidad de hacerlo de este modo tan básico de Comandos y Estructuras.
Les deseo lo mejor!
sábado, 15 de febrero de 2014
Ejercicio 002
El siguiente ejercicio me permite modificar
- El tamaño,
- Forma,
- Color y Contenido de un DIV
Además cambia el Texto dentro de un Botón
- El tamaño,
- Forma,
- Color y Contenido de un DIV
Además cambia el Texto dentro de un Botón
<!DOCTYPE html>
<!--Permite cambiar la forma de un Div existente, su contenido y el contenido del Boton de la pagina -->
<html>
<head>
<style type="text/css">
#caja { width:200px; height:60px; background-color:green; color:white; font-size:15px; text-align:center; }
</style>
</head>
<body>
<div id="caja">Aqui esta el div rojo </div>
<br>
<input id="miboton" type="button" onClick="cambios()" value="Clic aca para los cambios del div rojo arriba" />
</body>
<script language="javascript">
function cambios(){
document.getElementById("caja").style.width = "500px";
document.getElementById("caja").style.height = "450px";
document.getElementById("caja").style.fontSize = "62px";
document.getElementById("caja").style.textAlign = "center";
document.getElementById("caja").style.backgroundColor = "#FFB3B3";
document.getElementById("caja").style.border = "4px dashed red";
document.getElementById("caja").style.color = "black";
document.getElementById("caja").innerHTML="Se puede insertar Estilo y contenido de elementos en un Div";
document.getElementById("miboton").value = "Y funciona";
}
</script>
</html>
viernes, 14 de febrero de 2014
Ejercicio 001
Esta codificación permite crear una galería de imágenes en una página HTML5 por medio de una Barra de Corrimiento Horizontal (Scroll). Una vez que presionamos el Botón para repetir la acción. Limpia el Vector y vuelve a cargar todo de nuevo.
<!doctype html>
<html lang="es">
<!--
Te permite ver (n) imagenes en tira de acuerdo a tus necesidades
Si presiono el boton... LIMPIA LOS VECTORES y COMIENZA DE NUEVO
Galeria de imagenes
Cadena >>>>>>>>>>>>>>>>>>>> file:///C:/barra/img01.jpg
-->
<head>
<meta charset="utf-8">
<title>Barra Horizontal V.05</title>
</head>
<body onload="agregar()">
<style>
/* Barra Horizontal de Corrimiento */
.barra-panel {overflow:auto; position:absolute; left:10px; top:80%; width:98.5%; right:20px; height:140px; z-index:1; }
.borde-Panel {border: 1px solid RGB(0,0,0); background: RGB(215,201,168); }
.punta-Izq {border-top-left-radius: 5px; }
.punta-Der {border-top-right-radius: 5px; }
.barra-Scroll {width: 4500px; } /* Aca entran 20 fotos con un incremento de 130px por fotograma +/- */
.contiene-Item img {border: 1px solid RGB(0,0,0); width:150px; height:100px; float:left; margin: 10px; }
</style>
<div class="barra-panel borde-Panel punta-Izq punta-Der">
<div class="barra-Scroll" id="tira">
</div>
</div>
<input type="button" onclick="agregar()" value="Dame clic"/>
</body>
<script>
var bandera=0; // impide que limpie el vector recien creado al inicio del proceso
var kT = 11; // Cantidad de Imagenes
var misImagenes= new Array(kT); // Vector con las imagenes
// Completo el Vector con 22 imagenes
for (k = 0; k < kT; k++) {
if(k<10) {misImagenes [k] ="./Imagenes/img0"+k+".jpg";} else {
misImagenes[k] ="./Imagenes/img"+k+".jpg";}
};
function agregar() {
// **** Limpiar y recomenzar *****************************************************
if (bandera!=0) {
var kT=11;
for (k = 0; k < kT; k++) {
var papa = document.getElementById("P0"+k);
papa.parentNode.removeChild(papa);
}
};
// **** Carga las Imagenes *******************************************************
var kT=11;
for (k = 0; k < kT; k++) {
var elemento = document.createElement("div");
elemento.id="P0"+k;
elemento.className = "contiene-Item img";
elemento.innerHTML = "<img id=H0"+k+" src="+misImagenes[k]+">";
document.getElementById("tira").appendChild(elemento);
// document.getElementById('padre').insertBefore(nuevo_parrafo,segundo_p);
}
bandera=1;
};
</script>
</html>
Suscribirse a:
Entradas (Atom)




