Kod: Markera allt
for( i = 1; i>0; i<<1) {
if(tmpBuffer & i) {
...
}
}
Kod: Markera allt
for( i = 1; i>0; i<<1) {
if(tmpBuffer & i) {
...
}
}
Kod: Markera allt
void setup() {
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(5, OUTPUT);
pinMode(10, INPUT);
pinMode(A2, INPUT);
pinMode(A3, INPUT);
pinMode(A4, INPUT);
pinMode(A5, INPUT);
digitalWrite(10, HIGH);
digitalWrite(A2, HIGH);
digitalWrite(A3, HIGH);
digitalWrite(A4, HIGH);
digitalWrite(A5, HIGH);
}
uint8_t doTimingMachines(uint32_t tmpOnTime, uint32_t tmpOffTime, uint32_t tmpRollOver, uint8_t tmpmachineCounter) {
uint8_t machineStops = digitalRead(19 + 18 + 17 + 16);
static uint8_t displayOn;
uint32_t currentMillis = millis();
static uint32_t previousMillis;
if((displayOn == 0) && (machineStops - tmpmachineCounter) >= 1 ) {
if (currentMillis - previousMillis < tmpOffTime) {
previousMillis = currentMillis;
} else {
displayOn = 1;
PORTD |= (1 << PD3);
tmpmachineCounter++;
}
}
if((displayOn == 0) && (machineStops - tmpmachineCounter) <= 0 ) {
if (currentMillis - previousMillis < tmpRollOver) {
previousMillis = currentMillis;
} else {
displayOn = 1;
PORTD |= (1 << PD3);
tmpmachineCounter = 0;
}
}
if(displayOn == 1) {
if (currentMillis - previousMillis < tmpOnTime) {
previousMillis = currentMillis;
} else {
displayOn = 0;
PORTD &= ~(1 << PD3);
}
}
return (machineStops - tmpmachineCounter);
}
int i;
void loop() {
while(1) {
i = (doTimingMachines(1000, 1000, 3000, i));
}
}
Kod: Markera allt
const uint32_t MACHINE_ON_TIME = 1000;
const uint32_t MACHINE_OFF_TIME = 1000;
const uint32_t MACHINE_R_O_TIME = 3000;
uint8_t doTimingMachines() {
machineStops = 3; // ta in ethernetbuffern här
uint32_t currentMillis = millis();
static uint32_t previousMillis;
if(displayOn && (currentMillis - previousMillis > MACHINE_ON_TIME)) {
previousMillis = currentMillis;
PORTD &= ~(1 << PD3);
displayOn = 0;
Counter++;
}
else if(!displayOn && (currentMillis - previousMillis > MACHINE_OFF_TIME) && ((machineStops - Counter) >= 1)) {
previousMillis = currentMillis;
PORTD |= (1 << PD3);
displayOn = 1;
}
else if(!displayOn && (currentMillis - previousMillis > MACHINE_R_O_TIME) && ((machineStops - Counter) == 0)) {
previousMillis = currentMillis;
PORTD |= (1 << PD3);
displayOn = 1;
Counter = 0;
}
return 0;
}
Kod: Markera allt
void doSomething(uint8_t tmpcaller) {
if(tmpcaller == nail) {
...
}
else if(tmpcaller == screw) {
...
}
else if(tmpcaller == nut) {
...
}
}
Det beror på, det är väl inte helt ovanligt att man skickar med vem som anropar som en parameter?Magnus_K skrev: Vet en funktion vad som har anropat den?
Kod: Markera allt
void someFunction( CObject *sender );
Kod: Markera allt
void doSomething(uint8_t tmpcaller) {
if(tmpcaller == nail) {
...
}
else if(tmpcaller == screw) {
...
}
else if(tmpcaller == nut) {
...
}
}
void doNail()
{
doSomething(nail);
}
void doScrew()
{
doSomething(screw);
}
...