Étape 2: Écrire le Code !
Programmation avec le XDK est un peu différente de la programmation avec Arduino. Arduino est dans C, tandis que le XDK est avec JavaScript. Une expérience avec la programmation n’est nécessaire pour comprendre ce qui se passe ici, même si aucun n’est nécessaire pour que cela fonctionne. Je dois personnellement, expérience en plusieurs langues, donc tout ce que j’ai généralement besoin de ramasser un nouveau est l’aide des mots-clés. J’ai essayé de documenter ce qui me paraissait nécessaire/utile, mais si vous avez besoin de quelque chose, a expliqué juste me demander !
/*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 }
J’ai écrit quelques autres Instructables avec cet affichage de la température comme le programme d’installation de l’exemple. En eux, j’ai eu le bouton Activer le rétro-éclairage pendant quelques secondes. C’est un peu différent parce que j’ai le bouton « exploitation » de la température actuelle. Je ne sais pas et ne peut pas trouver toutes les références sur la façon de, activer/désactiver ou modifier la couleur du rétroéclairage RVB.