You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
CubeSatSim/stempayload/STEM_Payload_Test/STEM_Payload_Test.ino

106 lines
3.2 KiB

/*
Blink
Turns on an LED on for one second, then off for one second, repeatedly.
Most Arduinos have an on-board LED you can control. On the Uno and
Leonardo, it is attached to digital pin 13. If you're unsure what
pin the on-board LED is connected to on your Arduino model, check
the documentation at http://arduino.cc
This example code is in the public domain.
modified 8 May 2014
by Scott Fitzgerald
Modified by Roger Clark. www.rogerclark.net for Maple mini 25th April 2015 , where the LED is on PC13
Added CubeSatSim Payload tests for STM32 and Pro Micro by Alan Johnston, KU2Y
*/
int sensorValue = 0;
int greenLED = 9;
int blueLED = 8;
// Calibration data for diode temperature sensor
float T1 = 25; // Temperature data point 1
float R1 = 373; // Reading data point 1
float T2 = 17; // Temperature data point 2
float R2 = 405; // Reading data point 2
// the setup function runs once when you press reset or power the board
void setup() {
#if defined(ARDUINO_ARCH_STM32F0) || defined(ARDUINO_ARCH_STM32F1) || defined(ARDUINO_ARCH_STM32F3) || defined(ARDUINO_ARCH_STM32F4) || defined(ARDUINO_ARCH_STM32L4)
// initialize digital pin PB1 as an output.
pinMode(PB9, OUTPUT);
pinMode(PB8, OUTPUT);
pinMode(PA0, INPUT_ANALOG);
pinMode(PA1, INPUT_ANALOG);
pinMode(PA2, INPUT_ANALOG);
T2 = 25; // Temperature data point 1
R2 = 2111; // Reading data point 1
T1 = 23; // Temperature data point 2
R1 = 2097; // Reading data point 2
#endif
#if defined __AVR_ATmega32U4__
pinMode(greenLED, OUTPUT);
pinMode(blueLED,OUTPUT);
#endif
Serial.begin(9600);
}
// the loop function runs over and over again forever
void loop() {
ledWrite(greenLED, HIGH); // turn the LED on (HIGH is the voltage level)
ledWrite(blueLED, LOW); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
ledWrite(greenLED, LOW); // turn the LED off by making the voltage LOW
ledWrite(blueLED, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
sensorValue = readAnalog(0);
// Serial.println(sensorValue);
sensorValue = readAnalog(1);
float temp = T1 + (sensorValue - R1) *(T2 - T1)/(R2 - R1);
Serial.print("Temperature: ");
Serial.print(temp);
Serial.println(" C");
sensorValue = readAnalog(2);
// Serial.println(sensorValue);
}
void ledWrite(int ledPin, bool state)
{
#if defined(ARDUINO_ARCH_STM32F0) || defined(ARDUINO_ARCH_STM32F1) || defined(ARDUINO_ARCH_STM32F3) || defined(ARDUINO_ARCH_STM32F4) || defined(ARDUINO_ARCH_STM32L4)
if (ledPin == greenLED)
digitalWrite(PB9, state);
else if (ledPin == blueLED)
digitalWrite(PB8, state);
#endif
#if defined __AVR_ATmega32U4__
digitalWrite(ledPin, state);
#endif
}
int readAnalog(int pin)
{
int value = 0;
#if defined(ARDUINO_ARCH_STM32F0) || defined(ARDUINO_ARCH_STM32F1) || defined(ARDUINO_ARCH_STM32F3) || defined(ARDUINO_ARCH_STM32F4) || defined(ARDUINO_ARCH_STM32L4)
if (pin == 0)
value = analogRead(PA0);
else if (pin == 1)
value = analogRead(PA1);
else if (pin == 2)
value = analogRead(PA2);
#endif
#if defined __AVR_ATmega32U4__
value = analogRead(pin);
#endif
return(value);
}

Powered by TurnKey Linux.