
Sitter med mitt examensarbete igen som legat och vilat ett tag, skall bara... "bara" implementera tempgivaren...

Inser då att ett av korten inte gör det det ska längre vilket naturligtvis har gjort tidigare...
Det är ett reläkort vilket styrs från ARD GPIO via en ULN2308? tror jag det var. Detta analogkort skall slå om relän när mätning skall göras, annars står dessa i NC motjord via ett 10k för att hålla ingången på noll så att säga.
Men nu till problemet, alla andra utgångar kan styras likt de alltid gjorts via sifferkoder men inte dessa, har bytt port, bytt pinnar, skrivit "DDRX = 0b00100101" ingen skillnad alls.
Tänkte att om jag dödat en port eller ingång på den av misstag? Nepp gjorde ett skitenkelt program för att testa:
Alla utgångar gör det de ska.
Kod: Markera allt
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
DDRE = 0xFF;
DDRH = 0xFF;
DDRB = 0xFF;
DDRG = 0xFF;
DDRL = 0xFF;
DDRD = 0xFF;
DDRC = 0xFF;
DDRJ = 0xFF;
DDRA = 0xFF;
DDRK = 0xFF;
DDRF = 0xFF;
}
void loop() {
// put your main code here, to run repeatedly:
PORTE |= 0XFF;
PORTH |= 0XFF;
PORTB |= 0XFF;
PORTG |= 0XFF;
PORTL |= 0XFF;
PORTD |= 0XFF;
PORTC |= 0XFF;
PORTJ |= 0XFF;
PORTA |= 0XFF;
PORTK |= 0XFF;
PORTF |= 0XFF;
}
Det är bara axplock av koden nedan. så return, {} etc finns allt med.
Kod: Markera allt
void setPinMode()
{
/**** ANALOGARELÄN ****/
for (uint8_t PM = 0; PM < sizeof(analog_relay); PM++)
{
pinMode(analog_relay[PM], OUTPUT);
delay(5);
//Serial.println("Step1");
}
/**** SIGNALRELÄN ****/
for (uint8_t PM = 0; PM < sizeof(digital_relay); PM++)
{
pinMode(digital_relay[PM], OUTPUT);
delay(5);
//Serial.println("Step2");
}
/**** KRAFTRELÄN ****/
for (uint8_t PM = 0; PM < sizeof(power_relay); PM++)
{
pinMode(power_relay[PM], OUTPUT);
delay(5);
//Serial.println("Step3");
}
return;
}
PORTAKTIVERING:
if ( relay_identifier_return == 10 )
{
digitalWrite(analog_relay[0], HIGH);
Serial.println(relay_identifier_return);
//relay_identifier_return = 0;
}
else if (relay_identifier_return == 11)
{
digitalWrite(analog_relay[0], LOW);
//relay_identifier_return = 0;
}
//Analog 2
if ( relay_identifier_return == 12 )
{
digitalWrite(analog_relay[1], HIGH);
Serial.println(relay_identifier_return);
//relay_identifier_return = 0;
}
DIGITALA:
{
/* SIGNALRELÄN */
//Digital 1
if ( relay_identifier_return == 20 )
{
digitalWrite(digital_relay[0], HIGH);
Serial.println(relay_identifier_return);
//relay_identifier_return = 0;
}
else if (relay_identifier_return == 21)
{
digitalWrite(digital_relay[0], LOW);
//relay_identifier_return = 0;
}
//Digital 2
if ( relay_identifier_return == 22 )
{
digitalWrite(digital_relay[1], HIGH);
Serial.println(relay_identifier_return);
//relay_identifier_return = 0;
}
else if (relay_identifier_return == 23)
{
digitalWrite(digital_relay[1], LOW);
//relay_identifier_return = 0;
}
Har inte prövat att köra
PORTX |= 0bXXXXXXXXX;
I själva programmet utom i testprogrammet för att se om porten fungerar.
Kortet är inte felkopplat då jag kan skicka 5v på reläkortets ingång och allt fungerar som tänkt...