Paso 2: Escriba el código!
Programación con el XDK difiere un poco de programación con Arduino. Arduino es en C, mientras que el XDK es con JavaScript. Alguna experiencia con la programación es necesario entender lo que está sucediendo aquí, aunque no es necesario para conseguir que funcione. Personalmente, tengo experiencia en muchos idiomas, así que todos generalmente es necesario recoger una nueva son las palabras clave. Trató de documentar lo que sentí necesaria atento, pero si necesitas algo explicado solo me preguntan!
/*jslint node:true,vars:true,bitwise:true,unparam:true */ /*jshint unused:true */ // Those above are required by javascript. var mraa = require("mraa"); // A new object of class "mraa" //Grove Temperature module, plugged into Analog pin 0 var temperature = new mraa.Aio(0); var B = 3975; var button = new mraa.Gpio(5); var buttonState = 0; var clearString = " "; // Will be called when we want to clear a line on the LCD var Screen = require('jsupm_i2clcd'); // A new object of class "jsupm_i2clcd" (lcd class) var Lcd = new Screen.Jhd1313m1 (0, 0x3E, 0x62); //Initialize Jhd1313m1 at 0x62 (RGB_ADDRESS) and 0x3E (LCD_ADDRESS) // These are the 2 methods of Lcd. setCursor(row,column) and write(string) Lcd.setCursor(0,0); Lcd.write("Temperature:"); // start the functions checkButton(); tempDisplay(); function tempDisplay() { // If the button is not being pressed, display the temperature... if(buttonState == 0) { var fahrenheit_temperature = getTemp(); // ask for the temperature Lcd.setCursor(1,0); Lcd.write(clearString); // clear the "HOLD" string, in case it was there Lcd.setCursor(1,0); Lcd.write("F: " + parseInt(fahrenheit_temperature*100,10)/100); // This shows the temperature to 2 decimal places } setTimeout(tempDisplay,1000); // ... every second } function getTemp() { var a = temperature.read(); var resistance = (1023 - a) * 10000 / a; // get the resistance of the sensor; var celsius_temperature = 1 / (Math.log(resistance / 10000) / B + 1 / 298.15) - 273.15; // convert to temperature, based on Grove's datasheet var fahrenheit_temperature = (celsius_temperature * (9 / 5)) + 32; // convert to fahrenheit return fahrenheit_temperature; // return the temperature } function checkButton() { buttonState = button.read(); // Let the user know the temperature display is being HELD if(buttonState == 1) { Lcd.setCursor(1,10); Lcd.write("HOLD"); } setTimeout(checkButton,10); // call this function every 10 milliseconds }
Escribí algunos otros Instructables con esta exhibición de la temperatura como la configuración de ejemplo. En ellos, tenía el botón activar la retroiluminación durante unos segundos. Esto es ligeramente diferente porque tengo el botón de "celebración" de la temperatura actual. No sé y no puede encontrar referencias sobre cómo, encender/apagar o cambiar el color de la retroiluminación RGB.