Autor Tema: ¿Que es el PROYECTO ARDUINO? plataforma software-hardware  (Leído 3328 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado CompSystems

  • PIC18
  • ****
  • Mensajes: 488
    • Home Page
¿Que es el PROYECTO ARDUINO? plataforma software-hardware
« en: 21 de Marzo de 2016, 00:55:04 »
Llevo muy poco tiempo programando y conociendo el PROYECTO ARDUINO y comparto mi poca experiencia que ira creciendo simultáneamente a mi autoaprendizaje.
Este es un resumen de lo que es el proyecto ARDUINO, cualquier aporte (correcciones, ampliaciones, sugerencias, criticas, propuesta etc.) es bienvenida.

Antes de Arduino, el Microchip PIC fue el microcontralodor de elección de muchas personas, con la llegada del proyecto ARDUINO, se ha creado una tendencia a nivel mundial de entrarse en el mundo de la electrónica y la programación computacional, sin tener bastos conocimientos en estos dos campos, también es usado los ARDUINOs como hardware de control para prototipado pero no como parte de un producto final de producción.

La marca ARDUINO implica tanto hardware como software, la palabra ARDUINO es un apellido italiano, donde se dice que unos de los desarrolladores de este proyecto, uso el nombre final de un bar que se llama "BAR DEL REY ARDUINO" 

HARDWARE



Utilicemos la ARDUINO BOARD llamada "Arduino MEGA 2560" como tarjeta de referencia, esta tarjeta posee un uctrl referencia ATMEga2560 (256KiB) de memoria flash



La memoria FLASH sirve para contener el programa de control y un código bootloader (cargador de programa, código ~8KiB) se usa el bootloader con el propósito de reducir costos al no programarse la tarjeta con programadores externos si no básicamente a través del chip ATMEGA16u2 para la conversión de transmisiones serie RS-232 a señales USB, para usar un puerto USB del computador como un puerto RS-232 (programación y comunicación serial)

/!\ TOMO prestadas algunas imágenes de JORGE555 (http://elecrab.com), próximamente las actualizare con unas propias

PROGRAMADOR EXTERNO



En el hardware encontramos una tarjeta o PCB denominada ARDUINO BOARD que poseen como dispositivo electrónico principal un MICROCONTROLADOR (con arquitectura AVR [para la mayoría de tarjetas] o ARM [presente solo en Arduino-DUE]) próximamente saldrá al mercado una ARDUINO BOARD, con microcontrolador mas un procesador fabricado por la compañia estadounidense TEXAS INSTRUMENTS, tarjeta llamada ARDUINO TRE el propósito es tener una pequeña y económica PC con característica de CONTROL, que pueda cargar un OS (Sistema Operativo) e ir mas allá de lo que propone el proyecto RASPBERRY-PI en su versión actual #3.

PUERTOS DE CONEXIÓN



En los extremos de la mayor parte de las ARDUINO BOARD se ubican unos conectores o pines-hembra para conexión con otros módulos externos (periféricos arduino) pines que también sirven para la conexión por medio de cables, por lo general hacia un protoboard o módulos tipo arduino (sensores, pantallas, teclados, etc), estos pines de conexión están agrupados por finalidad de operación para facilitar las conexiónes, por ejemplo conjunto de pines consecutivos para entradas análogas, pines para entradas y/o salidas digitales, pines de salida para ser usado como PWM (modulación por ancho de pulsos), entradas-salidas como puertos de comunicación serial. Los pines conectores son solo una extensión de los pines del microcontrolador, estos no llevan una circuiteria especial como se hacia antes con procesadores para darle características de control.



En la ARDUINO BOARD también encontramos los componentes externos mínimos al microcontrolador para que pueda ser incorporado a un uso electronico, los cuales son:

I: Los condensadores de desacople que se encargan de proporcionar los pulsos de corriente que necesita el microcontrolador para operar dentro de un circuito electrónico.



II. La señal de reloj, se puede generar con componentes internos del microcontrolador por medio de la configuración o programación de registros, también se puede generar la señal de reloj con componentes externos como cristales que generan una frecuencia de reloj mas precisa que con la que se obtiene por medio de la configuración de registros.

III. Resistencias de pull-up/pull-down para configurar características especiales del microcontrolador.



Otros componentes de la tarjeta son boton reset (reinicio),

conector de fuente de alimentación externa (por lo general de 12VDC)



interfaz USB multiproposito como alimentación de la tarjeta, comunicación serial y programación del microntrolador por medio del ATmega16U2



regulador de voltaje a 5V y 3.3V

Fuente: http://www.embarcados.com.br/arduino-mega-2560/
 
La filosofía de proyecto ARDUINO fue en un inicio que todo sea reproducible, nada oculto o privado (HARDWARE Y SOFTWARE LIBRE) pero ya vemos que no se esta cumpliendo por que algunas tarjetas nuevas no suministran los archivos esquemáticos, por ultimo empresas como GOOGLE, INTEL y TEXAS INSTRUMENTS están apoyando este gran proyecto.  :-)

fuente parcial: http://elecrab.com/archives/80
Informacion sobre el ArduinoBoardTre e Intel Galileo
https://www.arduino.cc/en/Main/ArduinoBoardTre
https://www.arduino.cc/en/ArduinoCertified/IntelGalileo

SOFTWARE

La magia del proyecto ARDUINO, no es el hardware, así este en la mayoría de los casos sea de muy de bajo costo, o que sea en su mayoría también hardware abierto (esquemáticos libres, etc.), si no que la magia radica en el SOFTWARE, primeros veamos como se pueden programar, los microcontroladores, existen dos tipos de lenguajes de programación computacional funcionales 100% (lenguajes de bajo/alto  nivel) otros están en desarrollo como programación en bloques, por diagramas de flujo.

LENGUAJE DE BAJO NIVEL como lo es el lenguaje ensamblador, lenguaje que permite codificar con instrucciones directas o propias a las características de una determinada CPU, su sintaxis se basa en OPERACIONES y OPERANDOS, operación (que acción se va a realizar), operandos (donde se va realizar [símbolos y parámetros]), este tipo de sintaxis es muy compleja, pero programar en lenguaje ensamblador es dominar por completo la arquitectura de una CPU, con la desventaja que el lenguaje ensamblador es propio para cada CPU, si programas en diferentes familias de microcontroladores y marcas tendrás que aprender el manejo propio de cada uno de ellas. es usado en la actualidad como curso de arquitectura de hardware, códigos en donde se desee máxima eficiencia.
 
LENGUAJE DE ALTO NIVEL, el mejor lenguaje que tiene caracteristicas de operación de bajo nivel es el lenguaje C, por esta razón se usa como lenguaje de programación de microcontroladores, se pretende con los lenguajes de alto nivel ABSTRAER el proceso de codificación, se define la ABSTRACCIÓN para aislar un elemento de su contexto o del resto de los elementos que lo acompañan. y se define la CAPA DE ABSTRACCIÓN como la manera de ocultar los detalles de implementación de ciertas funcionalidades.

El lenguaje C utilizado para programar microcontroladores, usa las mismas palabras clave del C tradicional, mas otras especificas, pero por cuestiones de arquitectura limitada de las CPU de los microcontroladores hay ciertas restricciones en el uso de tipo de datos en especial de punto flotante, otras caracteritricas no estan disponibles ya que son propias solo para procesadores. El lenguaje que proporciona el fabricante por lo general es un C adaptado a una familia especifica de microcontroladores, el "El lenguaje ARDUINO" también se basa en lenguaje C, pero no con todo el poder hasta ahora comparado con el  C suministrado por el fabricante.

veamos la siguiente comparación el primer código no corresponde o hace lo mismo que los dos siguientes solo es un ejemplo demostrativo, me pueden colaborar portando el código 2 y 3 a ASM


Código: ASM
  1. .org $0000                  ;sin  interrupciones
  2.    .include "1200def.inc"   ;definición de registros internos PORTB, etc
  3.  
  4.    ser r16                        ;pone a 0xFF el registro 16 (en ptos 1=salida)
  5.    out ddrb, r16                ;r16 es enviado a ddrb (configura pto.b salidas)
  6.    clr r16                         ;limpiamos el reg 16
  7.    out ddrd, r16                ;configuramos pto.d como entradas
  8.  
  9.  
  10. inicio:   in r17, pind          ;la entrada del pto.d se va al registro 17
  11.       andi r17, $03             ;aislamos los 2 primeros bits
  12.    
  13.       cpi r17, $01               ;compara el reg.17 con 01h (entrada1=1?)
  14.       breq arran                 ;si, goto a arran
  15.      
  16.       cpi r17, $02               ;compara el reg.17 con 01h (entrada2=1?)
  17.       breq paro                  ;si, goto a paro
  18.  
  19.       rjmp inicio                 ;(salto incond)
  20.  
  21. arran:   ldi r18, $0F         ;cargamos 0fh en el reg 18
  22.       out portb, r18           ;prenden los cuatro leds de menos peso
  23.       rjmp inicio                ;conectados en el puertob y goto a inicio
  24.  
  25. paro:   ldi r18, $00         ;cargamos 00h en el reg 18
  26.       out portb, r18           ;y lo sacamos por el puertob (leds off)
  27.       rjmp inicio               ;goto inicio


LENGUAJE para microcontroladores ATMEL

Código: C++
  1. #include <avr/io.h>
  2. #define F_CPU 8000000UL                 //clock frequency
  3. #include <util/delay.h>
  4. #define ledPin PORTA0
  5. int main(void){
  6.     DDRA |= (1<<ledPin);                //output pin
  7.     while(1){
  8.                 PORTA ^= (1<<ledPin);   //Toggle led
  9.                 _delay_ms(500);         //Delay 0.5 s
  10.     }
  11. }

Ahora en eL lenguaje ARDUINO

Código: C++
  1. int pinSalida = 7;
  2. void setup() {
  3.   // Configurar los pines del microcontrolador
  4.   pinMode(pinSalida, OUTPUT);
  5. }
  6. void loop() {
  7.   //Pone a 1 y a 0 el pin de salida.
  8.   digitalWrite(pinSalida, HIGH);
  9.   delay(500);
  10.   digitalWrite(pinSalida, LOW);
  11. }

A simple vista, vemos una mayor abstracción en el lenguaje de ARDUINO, en palabras comunes se entiende a simple vista en mayor porcentaje el código del lenguaje ARDUINO que el código escrito en lenguaje C propio de un microcontrolador, este simple y elemental echo, a encaminado a muchas personas sin tener bastos conocimientos en electrónica y programación computacional, a experimentar con arduino y en el ámbito de la educación como curso de nivel básico para aplicar los conceptos de una manera mas rápida y practica sin detenerse en la manipulación de registros, que es un método de programación profesional que requiere conocimientos avanzados.

fuente parcial: http://elecrab.com/archives/1

En redacción ...

Palabras reservadas (imcompletas y no revisadas) del lenguaje Arduino

se dividen en 3 grupos, Variables Structure & Functions

Código: C++
  1. A: variables
  2.  
  3. I Constantes
  4.  
  5. HIGH
  6.  
  7. LOW
  8.  
  9. INPUT
  10.  
  11. OUTPUT
  12.  
  13. INPUT_PULLUP
  14.  
  15. LED_BUILTIN
  16.  
  17. SERIAL
  18.  
  19. DISPLAY
  20.  
  21. PI
  22.  
  23. HALF_PI
  24.  
  25. TWO_PI
  26.  
  27. LSBFIRST
  28.  
  29. MSBFIRST
  30.  
  31. CHANGE
  32.  
  33. FALLING
  34.  
  35. RISING
  36.  
  37. false
  38.  
  39. true
  40.  
  41. null
  42.  
  43. II Variables de designación de puertos y constantes
  44.  
  45. DDRB
  46.  
  47. PINB
  48.  
  49. PORTB
  50.  
  51. PB0
  52.  
  53. PB1
  54.  
  55. PB2
  56.  
  57. PB3
  58.  
  59. PB4
  60.  
  61. PB5
  62.  
  63. PB6
  64.  
  65. PB7
  66.  
  67. DDRC
  68.  
  69. PINC
  70.  
  71. PORTC
  72.  
  73. PC0
  74.  
  75. PC1
  76.  
  77. PC2
  78.  
  79. PC3
  80.  
  81. PC4
  82.  
  83. PC5
  84.  
  85. PC6
  86.  
  87. PC7
  88.  
  89. DDRD
  90.  
  91. PIND
  92.  
  93. PORTD
  94.  
  95. PD0
  96.  
  97. PD1
  98.  
  99. PD2
  100.  
  101. PD3
  102.  
  103. PD4
  104.  
  105. PD5
  106.  
  107. PD6
  108.  
  109. PD7
  110.  
  111. III Tipos de datos
  112.  
  113. void
  114.  
  115. boolean
  116.  
  117. byte
  118.  
  119. char
  120.  
  121. unsigned char/long/int
  122.  
  123. double
  124.  
  125. float
  126.  
  127. int
  128.  
  129. long
  130.  
  131. short
  132.  
  133. string
  134.  
  135. class
  136.  
  137. IV Conversion
  138.  
  139. char()
  140. byte()
  141. int()
  142. word()
  143. long()
  144. float()
  145.  
  146. Variable Scope & Qualifiers
  147.  
  148. static
  149. volatile
  150. const
  151.  
  152. Utilities
  153.  
  154. sizeof()
  155. PROGMEM
  156.  
  157.  
  158. B: Structure
  159.  
  160. setup()
  161. loop()
  162.  
  163. Control Structures
  164.  
  165. if
  166. if...else
  167. for
  168. switch case
  169. while
  170. do... while
  171. break
  172. continue
  173. return
  174. goto
  175.  
  176. Further Syntax
  177.  
  178. ; (semicolon)
  179. {} (curly braces)
  180. // (single line comment)
  181. /* */ (multi-line comment)
  182. #define
  183. #include
  184.  
  185. Arithmetic Operators
  186.  
  187. = (assignment operator)
  188. +  (addition)
  189. - (subtraction)
  190. * (multiplication)
  191. / (division)
  192. % (modulo)
  193.  
  194. Comparison Operators
  195.  
  196. == (equal to)
  197. != (not equal to)
  198. < (less than)
  199. > (greater than)
  200. <= (less than or equal to)
  201. >= (greater than or equal to)
  202. Boolean Operators
  203.  
  204. && (and)
  205. || (or)
  206. ! (not)
  207. Pointer Access Operators
  208.  
  209. * dereference operator
  210. & reference operator
  211. Bitwise Operators
  212.  
  213. & (bitwise and)
  214. | (bitwise or)
  215. ^ (bitwise xor)
  216. ~ (bitwise not)
  217. << (bitshift left)
  218. >> (bitshift right)
  219. Compound Operators
  220.  
  221. ++ (increment)
  222. -- (decrement)
  223. += (compound addition)
  224. -= (compound subtraction)
  225. *= (compound multiplication)
  226. /= (compound division)
  227. %= (compound modulo)
  228. &= (compound bitwise and)
  229. |= (compound bitwise or)
  230.  
  231. C: Functions
  232.  
  233. Digital I/O:
  234.  
  235. pinMode()
  236. digitalWrite()
  237. digitalRead()
  238.  
  239. Analog I/O:
  240.  
  241. analogReference()
  242. analogRead()
  243. analogWrite() - PWM
  244.  
  245. Due & Zero only:
  246. analogReadResolution()
  247. analogWriteResolution()
  248.  
  249. Advanced I/O:
  250.  
  251. tone()
  252. noTone()
  253. shiftOut()
  254. shiftIn()
  255. pulseIn()
  256.  
  257. Time:
  258.  
  259. millis()
  260. micros()
  261. delay()
  262. delayMicroseconds()
  263.  
  264. Math:
  265.  
  266. min()
  267. max()
  268. abs()
  269. constrain()
  270. map()
  271. pow()
  272. sqrt()
  273.  
  274. Trigonometry:
  275.  
  276. sin()
  277. cos()
  278. tan()
  279.  
  280. Characters:
  281.  
  282. isAlphaNumeric()
  283. isAlpha()
  284. isAscii()
  285. isWhitespace()
  286. isControl()
  287. isDigit()
  288. isGraph()
  289. isLowerCase()
  290. isPrintable()
  291. isPunct()
  292. isSpace()
  293. isUpperCase()
  294. isHexadecimalDigit()
  295.  
  296. Random Numbers:
  297.  
  298. randomSeed()
  299. random()
  300. Bits and Bytes
  301.  
  302. lowByte()
  303. highByte()
  304. bitRead()
  305. bitWrite()
  306. bitSet()
  307. bitClear()
  308. bit()
  309.  
  310. External Interrupts:
  311.  
  312. attachInterrupt()
  313. detachInterrupt()
  314. Interrupts
  315.  
  316. interrupts()
  317. noInterrupts()
  318.  
  319. Communication:
  320.  
  321. Serial
  322. Stream
  323. USB (32u4 based boards and Due/Zero only)
  324.  
  325. Keyboard
  326. Mouse

PD: hardware y software libre es la posibilidad, de mejorar la educación y educarse, derechos de autor, patentes, registros solo beneficia a unos pocos
« Última modificación: 28 de Marzo de 2016, 11:19:15 por CompSystems »
Desde Colombia

Desconectado Pinolillo16

  • PIC18
  • ****
  • Mensajes: 324
Re:¿Que es el PROYECTO ARDUINO? hardware/software
« Respuesta #1 en: 21 de Marzo de 2016, 03:49:11 »
Muy buena explicación, la que has dado. Comparto en esa facilidad de poder hacer cosas super impresionantes en tan poco tiempo, difiero un poco sobre un beneficio real que este puede tener a largo plazo. Aca en México como en muchísimas partes del mundo Arduino ha llegado a romper "esquemas" en cuanto el desarrollo de proyectos, hoy en dia encuentras en muchas escuelas a muchos chicos desarrollado proyectos basados en arduino, incorporando LCDs, sensores de temperatura, ultrasonicos, acelerometros, giroscopios, entre otros. Y sabes ha generado una idea errónea de lo que estos componentes pueden representar, en las tiendas de electrónica cada vez es mas común que pregunten: ¿Tiene sensores para Arduino? porque es muy común que estos chicos cojan una libreria especifica y busquen armar el circuito del tutorial, donde yo difiero sobre el beneficio es que se olvidan de conocer la hoja de datos de los sensores, dejan de investigar como arrancar los periféricos de comunicación, no conocen los principios de las comunicación rs232, spi, i2c, rs485, 1 wire así mismo muchas veces desconocen como procesar los datos. Esto lo comento porque cuando he apoyado algunos proyectos a veces no saben de lo que uno les habla solamente se han detenido a buscar proyectos ya hechos para replicarlos y pasar una materia, cabe mencionar que no es una generalidad pero si una tendencia, bien por aquellos que siguen desarrollando y conociendo porque así mismo también hay muchas cosas buenas en arduino. Solo creo que aquel que le guste el desarrollo electrónico tiene que seguir investigando continuamente para no depender de una librería, de una tarjeta de desarrollo o de un solo entorno de programación.

Saludos

Desconectado Jorge555

  • PIC18
  • ****
  • Mensajes: 496
    • JMN
Re:¿Que es el PROYECTO ARDUINO? hardware/software
« Respuesta #2 en: 21 de Marzo de 2016, 05:57:27 »
La historia de Arduino: http://arduinohistory.github.io/ y el hardware libre

Desconectado CompSystems

  • PIC18
  • ****
  • Mensajes: 488
    • Home Page
Re:¿Que es el PROYECTO ARDUINO? hardware/software
« Respuesta #3 en: 21 de Marzo de 2016, 13:59:00 »
Muchos de nosotros hemos creado tarjetas similares a las arduino y tal ves mucho mejores, lo que casi nadie ha realizado son compiladores y lenguajes para programar microcontroladores y muchos menos lenguajes intuitivos como lo es el LENGUAJE ARDUINO (aunque hay mucha información y libros sobre el tema de creación de compiladores), ahora me falta investigar si el lenguaje arduino usa algún SDK (Herramientas de Desarrollo de Software) ya previamente realizado o si lo desarrollaron desde cero el compilador y todo lo que se necesita para llegar a crear un IDE (Ambiente de Desarrollo Integrado) que se compone de un editor, compilador-enlazador, depurador

Según el ARTICULO la historia no contada de ARDUINO, se dice que el lenguaje ARDUINO se baso en processing, ¿pero de que tipo? por ejemplo JAVA esta basado en el lenguaje C, pero solo en la sintaxis, veo la similitud entre lenguaje ARDUINO y processing también solo en la sintaxis, por que el enfoque es diferente en cada caso, processing es para PC y para crear por lo general interfaces gráficas

Hay ciertas criticas en las universidades sobre el uso de ARDUINOS, por ejemplo se dice que el ARDUINO motiva al facilismo COPIAR-PEGAR y no el analizar ni el pensar, pero el problema real es el sistema de evaluación, en primeros semestres los conceptos o teoría se captarían mejor con herramientas que faciliten llevarlas a la practica, después de tener estas bases, el docente ya no pedirá que el proyecto final se realice con Arduinos, sino con un hardware dedicado al proyecto e IDE profesional, siguiendo este método es mas que valido el uso de ARDUINOs

Ahora a nivel de secundaria o bachillerato, pensemos si se te ofrecen cumplir un sueño o proyecto, fabuloso si podes lograrlo y ver su funcionamiento, así no sepas como  funciona en su totalidad, eso es lo que hace arduino, si sigues una carrera ya podrás entender realmente como se hacen las cosas paso a paso y con detalle.
« Última modificación: 21 de Marzo de 2016, 14:01:08 por CompSystems »
Desde Colombia

Desconectado Geo

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 922
    • Mexchip
Re:¿Que es el PROYECTO ARDUINO? hardware/software
« Respuesta #4 en: 22 de Marzo de 2016, 13:50:19 »
Muchos de nosotros hemos creado tarjetas similares a las arduino y tal ves mucho mejores, lo que casi nadie ha realizado son compiladores y lenguajes para programar microcontroladores y muchos menos lenguajes intuitivos como lo es el LENGUAJE ARDUINO (aunque hay mucha información y libros sobre el tema de creación de compiladores), ahora me falta investigar si el lenguaje arduino usa algún SDK (Herramientas de Desarrollo de Software) ya previamente realizado o si lo desarrollaron desde cero el compilador y todo lo que se necesita para llegar a crear un IDE (Ambiente de Desarrollo Integrado) que se compone de un editor, compilador-enlazador, depurador
Arduino utiliza compiladores ya existentes (para AVR utiliza avr-g++, un port de g++ para AVR), lo que se ha desarrollado es el editor (el cual está basado en Wiring, que a su vez está basado en Processing), así como la definición de la API y bibliotecas/librerías. El "lenguaje Arduino" no existe, el lenguaje en realidad es C/C++, utilizando un conjunto de objetos/funciones ya definidos (API, o la abstracción de utilizar métodos setup() y loop(), que viene de Processing), del mismo FAQ de Arduino (https://www.arduino.cc/en/Main/FAQ):
Citar
Can I program the Arduino board in C?
In fact, you already are; the Arduino language is merely a set of C/C++ functions that can be called from your code. Your sketch undergoes minor changes (e.g. automatic generation of function prototypes) and then is passed directly to a C/C++ compiler (avr-g++). All standard C and C++ constructs supported by avr-g++ should work in Arduino. For more details, see the page on the Arduino build process.
La imaginación es el límite.
Visita mi blog, en inglés o en español :).
Mini curso de introducción a VHDL en MEXCHIP :-/

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:¿Que es el PROYECTO ARDUINO? hardware/software
« Respuesta #5 en: 22 de Marzo de 2016, 18:43:16 »
Hay ciertas criticas en las universidades sobre el uso de ARDUINOS, por ejemplo se dice que el ARDUINO motiva al facilismo COPIAR-PEGAR y no el analizar ni el pensar, pero el problema real es el sistema de evaluación, en primeros semestres los conceptos o teoría se captarían mejor con herramientas que faciliten llevarlas a la practica, después de tener estas bases, el docente ya no pedirá que el proyecto final se realice con Arduinos, sino con un hardware dedicado al proyecto e IDE profesional, siguiendo este método es mas que valido el uso de ARDUINOs

Vamos a ir por parte:

Yo soy estudiante. Y si comprendo la idea, el mayor problema viene cuando no se pasa de eso, o casi siempre queda como un plano secundario el usar otra cosa o que el alumno entienda que es algo "pasajero". En ingenieria electronica yo lo veo como algo realmente malo y eso que no tuve los mejores docentes que me explicaran sobre microcontroladores, ya que no nos dijo nada y en medio año tuvimos que hacer un proyecto desde 0, literalmente desde 0 por que la mayoria jamas habia tocado un datasheet y el profesor solo venia a hablar con nosotros y no enseñarnos. Hasta el proyecto tenia que ser realizado en ASM, si luego queres usar C adelante.

Sin ir mas lejos teniamos un usuario que estudiaba mecatronica ( creo que ingenieria ) y para presentar su tesis le permitian usar Arduino. Esta bien, no es electronica es en parte entendible.
Pero tambien tuve un conocido de Colombia que estudiaba Ing Electronica y lo unico que usaban era Arduino. Cuando le comentaba de otra micro / IDE / etc, te decia "yo me quedo con mis Arduinos". Pensaras que es deicision de el, pero una de las cosas que te inculca la universidad es el auto-aprendizaje y siempre aprender y buscar mas.

Lo que si estoy de acuerdo es aplicarlo en al educacion secundaria, donde como bien decis es bueno que el usuario vea avances rapidos. Y que lo motiva, pero no podes incluir en tu misma declaracion a una universidad.

Citar
se dice que el ARDUINO motiva al facilismo COPIAR-PEGAR y no el analizar ni el pensar

Terminan promoviendo eso. Entonces luego de la universidad la persona no sabe nada sobre un microcontrolador. Si puede llegar a programar por que C es C y vale para todos, ahh pero no tenes una API ahora!, con lo cual pedirle que lea un datasheet es imposible. Para que ? Si tenes una funcion que te lo hace todo en Arduino. Aca hay un usuario que ya me ah demostrado que ni siquiera toco jamas el datasheet del micro a pesar de tener un proyecto con 3/4 micros juntos, y se dedico a "probar" en el compilador. Esto es PIC, con CCS, pero van de la mano al tener su propia API.

El tener todo servido en bandeja de plata, es decir cada sensor tiene su propia libreria y en internet te vas a encontrar 4618764817 de estas. Lo unico que hace la persona es COPIAR y PEGAR!! Pero bueno no solo ocurre con Arduino y tampoco digo que es malo yo prefiero copiar y pegar. Tambien ocurre con otros microcontroladores, el tema es que si buscas "libreria","Arduino" te llenas de librerias, entonces que es mejor ? Tomar una libreria, no funciona, ver por que no funciona, ver como funciona. O ir a buscar otra libreria? Terminan buscando otra por que hay miles.
Pero hace poco me toco ver burradas de varias personas al crear librerias sobre un DHT11, y lo mas lindo que habia uno de ellos quienes venden los modulos ( Adafruit es uno ). Y luego de eso tenes las miles de copias de esa libreria que llevan el error. Un error ABSURDO y GRANDE si lo pensas del punto de vista electronico. Pero FUNCIONA! dejemoslo asi.

Citar
pero el problema real es el sistema de evaluación

No se a que te referis con el "sistema de evaluacion". Si evaluo el copiar y pegar ?. Es extraño por que los modulos "Arduino" (si, hay gente que cree que es solo para arduino ) que compre para usarlo con mis micros, lo unico que ves en los comentarios es: Sobre que libreria funciona, algun intrepido que miro el codigo y puso la opcion correcta. Acabo de abrir uno sobre un TFT y:

Citar
Pros: works as expected. Cons: as somebody said in another review, you need the library in to make it work. It's a bit tricky to get the

Citar
The software that came with the product did not work and I had to search the web a bit to find help, which is why I gave the product only two stars at "Ease of use". Once I found the correct libraries the product worked as expected. Software tip: If you connect this to an Arduino then "Buhosoft" has written a great library based on the adafruit library which works well for both the Arduino UNO and MEGA. Go to http://forum.arduino.cc/index.php?topic=292777.0 to download the library.

Citar
To make the screen working on Arduino Mega 2560 first of all download and install the UTFT library from the link http://henningkarlsen.com/electronics/library.php?id=51 You can use the UTFT_Demo_320x240 example from library code example to start. You'll need to change the UTFT line as following : UTFT myGLCD(ILI9325C,38,39,40,41);

O sea el truco se basa en encontrar la libreria que funcione ... y no ver por que no funciona. O como es que funciona. O crear tu propia libreria.
Como decia, no estoy en contra de copiar y pegar, por que lo realizo, pero no es un Copy & Paste unicamente, sino es un copiar, pegar, analizar, ver como funciona, modificarlo a mi gusto, quitar cosas que estan sin sentido para la mayoria de mis aplicaciones.

-----------------------

Pero la critica no se basa unicamente en COPIAR y PEGAR, sino que ademas ocurre lo mismo que ocurre en CCS, es decir tenes funciones que debes conocer si o si para hacer ciertas cosas. Me refiero a que tenes una API, esa API te abstrae del hardware, lo cual me parece perfecto siempre y cuando te mantengas dentro de Arduino ( placa completa ), Pero al ir a otro micro y necesites tocar un datasheet del micro vas a morir en el intento. Vas a estar buscando funciones que hagan las cosas por vos. Eso lo tenes que tener por seguro.
« Última modificación: 22 de Marzo de 2016, 19:54:41 por KILLERJC »

Desconectado CompSystems

  • PIC18
  • ****
  • Mensajes: 488
    • Home Page
Re:¿Que es el PROYECTO ARDUINO? hardware/software
« Respuesta #6 en: 23 de Marzo de 2016, 16:27:41 »
Gracias muy buenos aportes, para crear una publicación o resumen final, de lo que es verdaderamente ARDUINO y para que campos o en donde sirve.

Sobre el Software, como dice el compañero arduino no es un verdadero lenguaje, si no mas bien un IDE que usa compiladores ya existentes (para AVR utiliza avr-g++ [un port de g++ para AVR] ), en el IDE, se basa en WIRING http://wiki.wiring.co/wiki/The_History_of_Wiring que a su ves se baso en el código fuente libre de Processing https://github.com/processing/processing


He programado en lenguaje C solo los microcontroladores motorola 68K (GP32 ahora descontinuados) , deseo actualizarme con PICs y otras marcas como también explorar los Arduinos

Me gustaría que iniciáramos una sección códigos simples escritos en "lenguaje arduino", lenguaje c para atmel y ensamblador, para ver similitudes, diferencias, enfoques, capacidades, etc estoy dispuesto a colaborar

Gracias
« Última modificación: 23 de Marzo de 2016, 17:31:38 por CompSystems »
Desde Colombia

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:¿Que es el PROYECTO ARDUINO? hardware y software
« Respuesta #7 en: 24 de Marzo de 2016, 23:05:22 »
Citar
Me gustaría que iniciáramos una sección códigos simples escritos en "lenguaje arduino", lenguaje c para atmel y ensamblador, para ver similitudes, diferencias, enfoques, capacidades, etc estoy dispuesto a colaborar

Yo te ayudo si necesitas pasarlo a ensamblador, hace desde que se hizo el bootloader con Picuino que no toque mas el ensamblador de los ATmega/Attiny