var counter=0;\r
var nPeriodPWMCount = 0;\r
var AD1=0;\r
-var AD2=0;\r
var tAD1=0;\r
-var tAD2=0;\r
var ttemp = 0;\r
var cADC1=0;\r
-var cADC2=0;\r
var ctemp=0;\r
var bCompletedAD1 = 0;\r
-var bCompletedAD2 = 0;\r
-var bCompletedTemp = 0;\r
var nEventID =0;\r
var DIO1=0;\r
var DIO2=0;\r
var szCommand = "";\r
-var nADChannel = 1;\r
-var trianglevoltage = 0.0;\r
-var xPWMFreq = 0.0;\r
-var xPWMFreqPreSet = 0.1;\r
-var nPWMCount = 0;\r
-var xPWMBasisSinWaveValue = 0.0;\r
-var xPWMOutAmp = 3.3/2;\r
-var xPWMOutOffset =0.0;\r
-var nPWMMode = 1; //1:SineWave; 2:TriangleWave; 3:SquareWave\r
\r
-var PWMPreset = new PWM();\r
-var PWMOut = new PWM();\r
+\r
const deviceID = K4.deviceID;\r
\r
const nAnalogMeasureInterval = 50; //ms\r
const nDataUploadInterval=30000; //ms\r
const nGetCommandInterval=1000; //ms\r
const nDisplayInterval=1000; //ms\r
-const nPWMInterval=40; //ms\r
-const xPWMOutMaxVoltage = 3.3; //V\r
-const xPWMOffsetVoltage = xPWMOutMaxVoltage/2; //V\r
const nAccumAD1=4;\r
-const nAccumAD2=4;\r
-const nAccumTemp=4;\r
+\r
//const protomode = "MieSAN";\r
//const xAD1Gain = 1.99162; //-\r
const protomode = "Basis";\r
const xErrorTempMax = 100;//C\r
const xErrorTempMin = -35;//C\r
\r
-PWMPreset.xFrequency = 0.0;\r
-PWMPreset.xAmp = 0;\r
-PWMPreset.nPWMMode = 1;\r
-PWMPreset.xOffsetVoltage = 0.0;\r
\r
-PWMSet(PWMPreset, PWMOut);\r
-PWMFreqSet(PWMPreset.xFrequency);\r
\r
log("DeiveID: " +deviceID +"\n");\r
\r
mainCon.add(labelControlMode);\r
application.add(mainCon);\r
\r
-// analogpins 37 -> 52, 38->51, 39->54\r
+// analogpins 37 -> 52\r
\r
Pins.invoke("setPinMux", {\r
leftVoltage: 3.3, rightVoltage: 3.3,\r
- leftPins: [3, 3, 0, 3, 0, 0, 0, 2],\r
+ leftPins: [0, 3, 0, 0, 0, 0, 0, 2],\r
rightPins: [0, 0, 0, 0, 0, 0, 0, 0]\r
});\r
\r
AD1: { pin: 52 }\r
}\r
},\r
- analogSensor2: {\r
- require: "AD2",\r
- pins: {\r
- AD2: { pin: 51 }\r
- }\r
- },\r
- analogTemp: {\r
- require: "LM61BIZ",\r
- pins: {\r
- temperature1: { pin: 54 }\r
- }\r
- },\r
DIO: {\r
require: "DIO",\r
pins: {\r
DIO2: { pin: 6 }\r
}\r
},\r
- pwmSensor: {\r
- require: "PWM",\r
- pins: {\r
- pwm: { pin: 28 }\r
- }\r
- },\r
ground: {\r
pin: 58, type: "Ground"\r
}\r
, function(success) {\r
if (success){\r
log("Successed to Pin configure\n");\r
- //Pins.repeat("/analogTemp/read", 50, value => TemperatureValueChanged(value));\r
- //Pins.repeat("/analogSensor1/read", 3, value => Analog1ValueChanged(value));\r
- //Pins.repeat("/analogSensor2/read", 3, value => Analog2ValueChanged(value));\r
- //Pins.share("ws", {zeroconf: true, name: "analog-temperature"});\r
- application.invoke(new Message("/AnalogMeasureTimer"));\r
- application.invoke(new Message("/PWMTimer"));\r
- // Pins.invoke("/pwmSensor/write", 0.5); // you should only pass in one number for an LED\r
+ Pins.repeat("/analogSensor1/read", 3, value => Analog1ValueChanged(value));\r
}else{\r
\r
log("Failed to configure\n");\r
\r
//--sub routine -- \r
\r
-function TemperatureValueChanged(value){\r
- let xtemp1 = value.temperature1;\r
- if (xtemp1 < xErrorTempMax && xtemp1 > xErrorTempMin) {\r
- ttemp = (ttemp * ctemp + xtemp1)/(ctemp+1);\r
- ctemp=ctemp+1;\r
- }\r
- if (ctemp==nAccumTemp){\r
- temp= ttemp;\r
- ctemp =0;\r
- log("temperature:"+temp.toFixed(3) + ' C AD1:'+AD1.toFixed(3)+'V AD2:'+AD2.toFixed(3)+'V\n');\r
- if ( bCompletedTemp==0){\r
- bCompletedTemp = 1;\r
- application.invoke(new Message("/KinomaDataUpload"));\r
- }\r
- } \r
-}\r
\r
function Analog1ValueChanged(value){\r
let voltage = value.AD1;\r
application.invoke(new Message("/KinomaDataUpload"));\r
}\r
}\r
-// log("AD1:"+AD1.toFixed(3) + 'V AD2:'+AD2.toFixed(3) +'\n');\r
-}\r
-function Analog2ValueChanged(value){\r
- let voltage = value.AD2;\r
- if (voltage <= xErrorVoltageMax && voltage >= xErrorVoltageMin) {\r
- tAD2 = (tAD2 * cADC2 +voltage)/(cADC2+1);\r
- cADC2 = cADC2+1;\r
- }\r
- if (cADC2==nAccumAD2){\r
- AD2= tAD2;\r
- cADC2 = 0;\r
- if ( bCompletedAD2==0){\r
- bCompletedAD2 = 1;\r
- application.invoke(new Message("/KinomaDataUpload"));\r
- }\r
- }\r
-// log('AD2:'+AD2.toFixed(3) +'\n');\r
+// log("AD1:"+AD1.toFixed(3) + 'V\n');\r
}\r
\r
-function PWMSet(value1, value2){\r
- value2 = value1;\r
-}\r
-\r
-function PWMFreqSet(value){\r
- xPWMFreq = value;\r
- nPeriodPWMCount = Math.round(1.0/value/(nPWMInterval/1000));\r
-}\r
-\r
-\r
-function PWMOut(value){\r
- let voltage=0.0;\r
- if(nPWMMode ==1 ){\r
- //Sinewave\r
- voltage = value*xPWMOutAmp + xPWMOutOffset;\r
- // log("Founction Voltage:"+voltage);\r
- }\r
- \r
- if(nPWMMode ==3 || nPWMMode == 2){\r
- //SquareWave Generate ; duty 50% only\r
- let sqvoltage\r
- if (value >=0 && nPWMCount <= nPeriodPWMCount*0.5 ){\r
- sqvoltage = 1;\r
- }else{\r
- sqvoltage =-1;\r
- } \r
- if(nPWMMode == 3){\r
- //SquearWave\r
- voltage = sqvoltage*xPWMOutAmp + xPWMOutOffset;\r
- }\r
- if(nPWMMode == 2){\r
- //TriangleWave\r
- trianglevoltage = trianglevoltage + sqvoltage*xPWMOutAmp*4/nPeriodPWMCount;\r
- //log("tr vol:"+trianglevoltage);\r
- voltage = trianglevoltage + xPWMOutOffset - xPWMOutAmp;\r
- }\r
- }\r
-\r
- \r
- let pwmVoltage = voltage + xPWMOffsetVoltage;\r
- //log("PWM Voltage:"+pwmVoltage);\r
- let xPwmValue = pwmVoltage/3.3;\r
- //log("PWM Value:"+xPwmValue);\r
- Pins.invoke("/pwmSensor/write", xPwmValue); \r
-}\r
\r
\r
//--handler--\r
-Handler.bind("/AnalogMeasureTimer", {\r
- onInvoke: function(handler, message){\r
- log("TimeAnalog \n");\r
- if (nADChannel==1){\r
- Pins.invoke("/analogTemp/read", value => TemperatureValueChanged(value));\r
- \r
- Pins.invoke("setPinMux", {\r
- leftVoltage: 3.3, rightVoltage: 3.3,\r
- leftPins: [3, 0, 0, 0, 0, 0, 0, 2],\r
- rightPins: [0, 0, 0, 0, 0, 0, 0, 0]\r
- });\r
- }\r
- if (nADChannel==2){\r
- Pins.invoke("/analogSensor1/read", value => Analog1ValueChanged(value));\r
- \r
- Pins.invoke("setPinMux", {\r
- leftVoltage: 3.3, rightVoltage: 3.3,\r
- leftPins: [0, 0, 0, 3, 0, 0, 0, 2],\r
- rightPins: [0, 0, 0, 0, 0, 0, 0, 0]\r
- });\r
- }\r
- if (nADChannel==3){\r
- Pins.invoke("/analogSensor2/read", value => Analog2ValueChanged(value));\r
- \r
- Pins.invoke("setPinMux", {\r
- leftVoltage: 3.3, rightVoltage: 3.3,\r
- leftPins: [0, 3, 0, 0, 0, 0, 0, 2],\r
- rightPins: [0, 0, 0, 0, 0, 0, 0, 0]\r
- });\r
- }\r
- nADChannel = nADChannel +1;\r
- if (nADChannel > 3){\r
- nADChannel = 1;\r
- } \r
- counter=counter+1;\r
- handler.invoke( new Message("/delayAnalog?duration=" +nAnalogMeasureInterval ));\r
- },\r
- onComplete: function(handler, message){\r
- log("Time2 \n");\r
- // handler.invoke( new Message("/delay?duration=" +nDataUploadInterval ));\r
- }\r
-});\r
-\r
-Handler.bind("/delayAnalog", {\r
- onInvoke: function(handler, message){\r
- let query = parseQuery( message.query );\r
- let duration = query.duration;\r
- handler.wait(duration); \r
- },\r
- onComplete: function(handler, message){\r
- handler.invoke(new Message("/AnalogMeasureTimer"));\r
- }\r
-});\r
-\r
-\r
\r
Handler.bind("/UploadTimer", {\r
onInvoke: function(handler, message){\r
\r
Handler.bind("/DisplayTimer", {\r
onInvoke: function(handler, message){\r
- label1.string = "Temperature:"+temp.toFixed(1) + ' C AD1:'+AD1.toFixed(3)+' V AD2:'+AD2.toFixed(3)+' V';\r
+ label1.string = "AD1:"+AD1.toFixed(3)+' V';\r
label2.string = "Counter:"+counter;\r
label3.string = "DIO1: " + DIO1 + " DIO2: " + DIO2;\r
handler.invoke( new Message("/delayDisplay?duration=" +nDisplayInterval ));\r
\r
Handler.bind("/KinomaDataUpload", {\r
onInvoke: function(handler, message){\r
- if (bCompletedAD1 == 1 && bCompletedAD2 == 1 && bCompletedTemp == 1){\r
+ if (bCompletedAD1 == 1 ){\r
var uri = "http://a.yamagata-u.ac.jp/amenity/network/M2M/KinomaDataReciever.aspx?DeviceID="+deviceID;\r
uri = uri + "&AI1=" + AD1;\r
- uri = uri + "&AI2=" + AD2;\r
- uri = uri + "&AI3=" + temp;\r
uri = uri + "&pm=" + protomode;\r
uri = uri + "&EventID=" + nEventID;\r
handler.invoke( new Message( uri ), Message.TEXT );\r
}\r
);\r
\r
-Handler.bind("/PWMTimer", {\r
- onInvoke: function(handler, message){\r
- xPWMBasisSinWaveValue = Math.sin(nPWMCount/nPeriodPWMCount*Math.PI*2);\r
-// log(nPWMCount +" : "+ xPWMBasisSinWaveValue)\r
- nPWMCount = nPWMCount +1;\r
- PWMOut(xPWMBasisSinWaveValue);\r
- \r
- if (nPWMCount >= nPeriodPWMCount) {\r
- //Reset Counter\r
- nPWMCount = 0;\r
- trianglevoltage = 0.0; \r
- }\r
- handler.invoke( new Message("/delayPWM?duration=" +(nPWMInterval-8) ));\r
- log("TimerPWM " + nPWMCount + "\n");\r
-\r
- },\r
- onComplete: function(handler, message){\r
-\r
- }\r
-});\r
-\r
-Handler.bind("/delayPWM", {\r
- onInvoke: function(handler, message){\r
- let query = parseQuery( message.query );\r
- let duration = query.duration;\r
- handler.wait(duration); \r
- },\r
- onComplete: function(handler, message){\r
- handler.invoke(new Message("/PWMTimer"));\r
- }\r
-});
\ No newline at end of file