Sketch
// ===============================================
// SIMUINO_BEGIN
// ===============================================
// BOARD_TYPE: UNO
// SKETCH_NAME: HelloWorld_UNO.ino
// SIM_LENGTH: 600
// WIN_LAYOUT: 2
// SO_DELAY: 40
//================================================
// Scenario
//================================================
//
// SCENDIGPIN 10 1 0
// SCENDIGPIN 10 50 1
// SCENDIGPIN 10 100 0
// SCENDIGPIN 10 200 1
// SCENDIGPIN 9 1 0
// SCENDIGPIN 9 40 1
// SCENDIGPIN 9 130 0
// SCENDIGPIN 2 1 0
// SCENDIGPIN 2 100 1
// SCENDIGPIN 3 1 0
// SCENDIGPIN 3 140 1
// SCENDIGPIN 2 240 0
// SCENDIGPIN 3 260 0
//
// SCENANAPIN 4 1 5
// SCENANAPIN 5 1 8
// SCENANAPIN 4 80 12
// SCENANAPIN 5 120 18
//
//================================================
// Simuino log text customization
//================================================
// PINMODE_OUT: 13 "This is interrupt LED"
// PINMODE_OUT: 12 "PIN: Led Blink"
// DIGITALWRITE_LOW: 13 "Boom"
// DIGITALWRITE_HIGH: 13 "Crash"
// DIGITALWRITE_LOW: 12 "Led is off"
// DIGITALWRITE_HIGH: 12 "Led is on"
// DIGITALREAD: 9 "Read from nine"
// DIGITALREAD: 10 "Read from ten"
// ANALOGREAD: 4 "read analog four"
// ANALOGREAD: 5 "read analog five"
//-------- DIGITAL PIN settings ------------------
// Leds
int SORRY = 13;
//-------- ANALOGUE PIN settings
//int SENSOR1 = 4;
//int SENSOR2 = 5;
//================================================
// Function Declarations
//================================================
void blinkLed(int pin,int n);
void preTestCase();
void postTestCase();
//================================================
void sorryToBotherYou_1()
//================================================
{
digitalWrite(SORRY, HIGH);
delay(901);
digitalWrite(SORRY, LOW);
}
//================================================
void sorryToBotherYou_2()
//================================================
{
digitalWrite(SORRY, HIGH);
delay(902);
digitalWrite(SORRY, LOW);
}
//================================================
void setup()
//================================================
{
// Do nothing
}
int nloop = 0;
//================================================
void loop()
//================================================
{
int value,i;
nloop++;
preTestCase();
Serial.print("----- TestCase: ");Serial.print(nloop);
//--------------------------------
if (nloop == 1)
{
pinMode(SORRY,OUTPUT);
Serial.println(" Interrupts according to scenario ------");
attachInterrupt(0,sorryToBotherYou_1, CHANGE);
attachInterrupt(1,sorryToBotherYou_2, RISING);
blinkLed(12,50);
detachInterrupt(0);
detachInterrupt(1);
}
//--------------------------------
if (nloop == 2)
{
Serial.println(" Serial output ------");
Serial.println("This is a line with cr");
Serial.print("Test print:");
Serial.print("Hello ");
Serial.print("Simuino ");
Serial.print(100);
Serial.println("end of line");
Serial.print("Now the same without ln\n");
Serial.print("This is a line with cr\n");
Serial.print("Test print:");
Serial.print("Hello ");
Serial.print("Simuino ");
Serial.print(100);
Serial.print("end of line\n");
}
//--------------------------------
if (nloop == 3)
{
Serial.println(" Digital Write Blink Leds 4 - 13 ------");
for (i=4;i<=13;i++)
{
pinMode(i,OUTPUT);
}
for (i=4;i<13;i++)
{
blinkLed(i,2);
}
}
//--------------------------------
if (nloop == 4)
{
Serial.println(" Analog Read ------");
for(i=0;i<=5;i++)
{
value = analogRead(i);
Serial.print("Analog Value Pin "); Serial.print(i);Serial.print(": ");
Serial.println(value);
}
}
//--------------------------------
if (nloop == 5)
{
Serial.println(" Digital Read pin 3-13 ------");
for(i=3;i<=13;i++)
{
value = digitalRead(i);
Serial.print("Digital Value Pin "); Serial.print(i);Serial.print(": ");
Serial.println(value);
}
}
//--------------------------------
if (nloop == 6)
{
Serial.println(" Port Manipulation DDR and PORT ------");
// digital pins 7,6,5,4,3,2,1,0
DDRD = B11111110;
// digital pins -,-,13,12,11,10,9,8
DDRB = B00111111;
delay(500);
// All odd pins to LOW and even to HIGH
PORTD = B01010100;
PORTB = B00010101;
delay(500);
// All odd pins to HIGH and even to LOW
PORTD = B10101000;
PORTB = B00101010;
delay(500);
// digital pins 7,6,5,4,3,2,1,0
DDRD = B00000000;
// digital pins -,-,13,12,11,10,9,8
DDRB = B00000000;
delay(500);
// Not visible !
// All odd pins to LOW and even to HIGH
PORTD = B01010100;
PORTB = B00010101;
delay(500);
// All odd pins to HIGH and even to LOW
PORTD = B10101000;
PORTB = B00101010;
delay(500);
// PIND and PINB shall reflect HIGH/LOW if pinMode = INPUT
//PORTD &= B00000011; // turns off 2..7, but leaves pins 0 and 1 alone
}
//--------------------------------
if (nloop == 7)
{
Serial.println(" PWM ------");
i = 3;value=100+i;
analogWrite(i,value);
Serial.print("Analog Write Value Pin "); Serial.print(i);Serial.print(": ");
Serial.println(value);
i = 5;value=100+i;
analogWrite(i,value);
Serial.print("Analog Write Value Pin "); Serial.print(i);Serial.print(": ");
Serial.println(value);
i = 6;value=100+i;
analogWrite(i,value);
Serial.print("Analog Write Value Pin "); Serial.print(i);Serial.print(": ");
Serial.println(value);
i = 9;value=100+i;
analogWrite(i,value);
Serial.print("Analog Write Value Pin "); Serial.print(i);Serial.print(": ");
Serial.println(value);
i = 10;value=100+i;
analogWrite(i,value);
Serial.print("Analog Write Value Pin "); Serial.print(i);Serial.print(": ");
Serial.println(value);
i = 11;value=100+i;
analogWrite(i,value);
Serial.print("Analog Write Value Pin "); Serial.print(i);Serial.print(": ");
Serial.println(value);
}
//--------------------------------
if (nloop == 8)
{
Serial.println(" Read PINB PIND register according to scenario ------");
for (i=3;i<8;i++)
{
value = bitRead(PIND,i);
if(value == HIGH)
{
Serial.print("Pin is HIGH:");
Serial.println(i);
}
else
{
Serial.print("Pin is LOW:");
Serial.println(i);
}
}
for (i=8;i<14;i++)
{
value = bitRead(PINB,i-8);
if(value == HIGH)
{
Serial.print("Pin is HIGH:");
Serial.println(i);
}
else
{
Serial.print("Pin is LOW:");
Serial.println(i);
}
}
}
//--------------------------------
postTestCase();
delay(10);
}
//================================================
void preTestCase()
//================================================
{
int i;
Serial.begin(9600);
for(i=0;i<=13;i++)pinMode(i,INPUT);
}
//================================================
void postTestCase()
//================================================
{
Serial.println("----- End of Test -----");
Serial.end();
}
//================================================
void blinkLed(int pin,int n)
//================================================
{
int i;
pinMode(pin,OUTPUT);
for(i=1;i<=n;i++)
{
digitalWrite(pin, HIGH);
delay(500);
digitalWrite(pin, LOW);
}
pinMode(pin,INPUT);
}
//================================================
// End of Sketch
//================================================