run test

Dependencies:   mbed

Committer:
stkiegerl
Date:
Mon Jan 13 17:42:03 2020 +0000
Revision:
5:eb77a24b2d95
Parent:
4:58f30b934b59
Child:
6:c1c189a0992a
added Function lauflicht()

Who changed what in which revision?

UserRevisionLine numberNew contents of line
stkiegerl 0:c9cfffb3a319 1 #include "mbed.h"
stkiegerl 1:f92ffd7d6a00 2 #define BUTTON1 p14 // M3: push joystick pin
stkiegerl 3:6041499f4c0f 3 //#define BUTTON1 A1 // NUCLEO: Taster A1
stkiegerl 1:f92ffd7d6a00 4
stkiegerl 5:eb77a24b2d95 5 int modifyBit(int x, uint8_t position, bool State);
stkiegerl 5:eb77a24b2d95 6 int lauflicht(bool richtung, int time, int &anz);
stkiegerl 1:f92ffd7d6a00 7 void nibbleLeds(int value);
stkiegerl 5:eb77a24b2d95 8 void printb(uint8_t x);
stkiegerl 0:c9cfffb3a319 9
stkiegerl 0:c9cfffb3a319 10 BusOut myleds(LED1, LED2, LED3, LED4);
stkiegerl 0:c9cfffb3a319 11 DigitalIn button(BUTTON1);
stkiegerl 0:c9cfffb3a319 12
stkiegerl 0:c9cfffb3a319 13 const int INIT = 0x03;
stkiegerl 0:c9cfffb3a319 14
stkiegerl 0:c9cfffb3a319 15 int main () {
stkiegerl 1:f92ffd7d6a00 16 int anzahl, anz;
stkiegerl 1:f92ffd7d6a00 17 uint8_t value = INIT;
stkiegerl 1:f92ffd7d6a00 18
stkiegerl 5:eb77a24b2d95 19 anzahl = lauflicht(true, 400, anz=0);
stkiegerl 5:eb77a24b2d95 20 printf("anzahl = %d\n", anzahl);
stkiegerl 5:eb77a24b2d95 21
stkiegerl 1:f92ffd7d6a00 22 nibbleLeds(value);
stkiegerl 2:da59c940bc1b 23 printb(value);
stkiegerl 4:58f30b934b59 24 value = modifyBit(value, 2, 1);
stkiegerl 4:58f30b934b59 25 printb(myleds);
stkiegerl 4:58f30b934b59 26 printb(modifyBit(INIT, 3, 1));
stkiegerl 1:f92ffd7d6a00 27 wait(0.1);
stkiegerl 1:f92ffd7d6a00 28 }
stkiegerl 1:f92ffd7d6a00 29
stkiegerl 5:eb77a24b2d95 30 int lauflicht(bool richtung, int time, int &anz) {
stkiegerl 5:eb77a24b2d95 31 uint i;
stkiegerl 5:eb77a24b2d95 32 uint8_t lauf = 0x01;
stkiegerl 5:eb77a24b2d95 33
stkiegerl 5:eb77a24b2d95 34 if(!richtung){
stkiegerl 5:eb77a24b2d95 35 lauf = 0x08;
stkiegerl 5:eb77a24b2d95 36 }
stkiegerl 5:eb77a24b2d95 37 while(1) {
stkiegerl 5:eb77a24b2d95 38 nibbleLeds(lauf&0x0F);
stkiegerl 5:eb77a24b2d95 39 if(richtung) {
stkiegerl 5:eb77a24b2d95 40 lauf = lauf << 1;
stkiegerl 5:eb77a24b2d95 41 if (lauf > 8){
stkiegerl 5:eb77a24b2d95 42 lauf = 0x01;
stkiegerl 5:eb77a24b2d95 43 }
stkiegerl 5:eb77a24b2d95 44 }
stkiegerl 5:eb77a24b2d95 45 else {
stkiegerl 5:eb77a24b2d95 46 lauf = lauf >> 1;
stkiegerl 5:eb77a24b2d95 47 if (lauf == 0){
stkiegerl 5:eb77a24b2d95 48 lauf = 0x08;
stkiegerl 5:eb77a24b2d95 49 }
stkiegerl 5:eb77a24b2d95 50 }
stkiegerl 5:eb77a24b2d95 51 if(button){
stkiegerl 5:eb77a24b2d95 52 break;
stkiegerl 5:eb77a24b2d95 53 }
stkiegerl 5:eb77a24b2d95 54 wait_ms(time);
stkiegerl 5:eb77a24b2d95 55 anz++;
stkiegerl 5:eb77a24b2d95 56 }
stkiegerl 5:eb77a24b2d95 57 return anz;
stkiegerl 5:eb77a24b2d95 58 }
stkiegerl 5:eb77a24b2d95 59
stkiegerl 4:58f30b934b59 60 int modifyBit(int x, uint8_t position, bool State) {
stkiegerl 4:58f30b934b59 61 int mask = 1 << position;
stkiegerl 4:58f30b934b59 62 int state = int(State);
stkiegerl 4:58f30b934b59 63 return (x & ~mask) | ((state << position) & mask);
stkiegerl 4:58f30b934b59 64 }
stkiegerl 4:58f30b934b59 65
stkiegerl 2:da59c940bc1b 66 void printb(uint8_t x){
stkiegerl 2:da59c940bc1b 67 for(int i = sizeof(x)<<3; i; i--){
stkiegerl 2:da59c940bc1b 68 putchar('0'+((x>>(i-1))&1));
stkiegerl 2:da59c940bc1b 69 printf("\n");
stkiegerl 2:da59c940bc1b 70 }
stkiegerl 2:da59c940bc1b 71 }
stkiegerl 2:da59c940bc1b 72
stkiegerl 1:f92ffd7d6a00 73 void nibbleLeds(int value){
stkiegerl 1:f92ffd7d6a00 74 myleds = value%16;
stkiegerl 0:c9cfffb3a319 75 }