Arduino integer mit binärem Wert in decimal umwandeln?

// Probleme wurden gelöst. Teil des Problems war dass ich den Chip außversehen nach dem umprogrammieren eine Reihe zu weit nach Oben gemacht habe... Leichtsinnsfehler... :)

Hallo. Bin gerade an einem Projekt bei dem ich LED's mit einem 8Bit shift register zum leuchten bringen will.

1 bedeutet leuchten und 0 bedeutet aus.

Jetzt will ich einen Wert wie "10000001" angeben können und die LED's werden direkt so eingeschalten wie es im int aussieht.

Gerade im Moment probiere ich es so zu lösen dass ich der ShiftOut Funktion den decimalen Wert gebe welche diese dann wieder in decimal umwandelt und raus schiebt:

  int bits = 10000001;

  digitalWrite(latchPin, LOW);
  //Binary to decimal Versuch
  int decimal =
  (((bits / 10000000U) % 10) * 128)
  + (((bits / 1000000U) % 10) * 64)
  + (((bits / 100000U) % 10) * 32)
  + (((bits / 10000U) % 10) * 16)
  + (((bits / 1000U) % 10) * 8)
  + (((bits / 100U) % 10) *4)
  + (((bits / 10U) % 10) *2)
  + ((bits / 1U) % 10);

  shiftOut(dataPin, clockPin, MSBFIRST, decimal);

  digitalWrite(latchPin, HIGH);

Ich bin mir sicher dass man das wesentlich effizienter und schlauer lösen kann. Unter anderem funktioniert mein Code nicht mal... wenn ich ihn laufen lasse sind die LED's volgendermaßen angeschaltet: "00010000"...

Würde mich über Hilfe freuen und danke schon mal im Vorraus.

Liebe Grüße, Leo

Bild zum Beitrag
Computer, Technik, Programm, programmieren, Arduino, Code, Informatik, Technologie, binär, Integer, Spiele und Gaming
7 Segment anzeige Aktualisierrate ändern Arduino?

Hallo, ich baue ein Voltmeter mit esc steuerung und als anzeige verwende ich ein 7 Segment Display. Mein Problem ist, dass sich das Display zu schnell aktualisiert, so dass die Zahlen nicht lesbar sind.

Ich möchte das sich die Spannung jede sekunde aktualisiert und das display das ohne flackern anzeigt.

Vielen Dank im Vorraus!!

#include "SevSeg.h" ;
int sum = 0;          
unsigned char sample_count = 0; 
float voltage = 0.0;       
#include <Servo.h>
#define PIN_MOTOR 13
#define PIN_POTI A2
#define NUM_SAMPLES 10
SevSeg sevseg; 
Servo servo;
unsigned long startTime, delayTime = 1000; 
int val = 0;
void setup() 
{
  
  startTime = micros();
  servo.attach(PIN_MOTOR);
  servo.write(25); 
  delay(2000);
   
byte numDigits = 4; 
byte digitPins[] = {2, 3, 4, 5}; 
byte segmentPins[] = {6, 7, 8, 9, 10, 11, 12, 1}; 
sevseg.begin(COMMON_CATHODE, numDigits, digitPins, segmentPins); 
}
void loop() 
{
sevseg.setNumber(voltage * 1132,2);
sevseg.refreshDisplay();
sevseg.setBrightness(90); 
while (sample_count < NUM_SAMPLES) {
    sum += analogRead(A0);
    sample_count++;
     
    
     
  }
   
  voltage = ((float)sum / (float)NUM_SAMPLES * 5.015) / 1024.0;
   
  Serial.print(voltage * 11.132);
  Serial.println (" V");
  sample_count = 0;
  sum = 0;
   
   
  if ((millis() - startTime) >= delayTime){
    val = map(analogRead(PIN_POTI), 0, 676, 30, 110);
    servo.write(val);
    Serial.println(val);
    startTime = micros();
  }  }

https://www.youtube.com/watch?v=1zuE3fo1_lQ

Technik, Arduino
Tasterstatus HIGH schalten ?

Hallo Leute bei dem unten Angegebenen Sketch sieht man das wen count richtig ist und der Taster gedrückt ist die LEDS in Reihenfolge blinken sollen.

Ich möchte das die LEDS nicht mehr aufhören zu blinken was muss ich da noch ergänzen?

int taster1=7;
int taster2=8;


int tasterstatus2=0;


int led1=12;
int led2=11;
int led3=10;
int led4=9;







bool oldButtonState = HIGH;
bool newButtonState;
int count = 0;


void setup() {
 pinMode (taster1,INPUT);
pinMode (taster2,INPUT);




pinMode (led1,OUTPUT);
pinMode (led2,OUTPUT);
pinMode (led3,OUTPUT);
pinMode (led4,OUTPUT);





}


void loop() {
  newButtonState = digitalRead(taster1);
  
  tasterstatus2 = digitalRead(taster2);
  
  if (oldButtonState == HIGH && newButtonState == LOW) {
    count++;
    oldButtonState = newButtonState;


    if (count == 1) {
      digitalWrite(led1, HIGH);
    }
    if (count == 2) {
      digitalWrite(led1, LOW);
      digitalWrite (led2,HIGH);
    }


    if (count == 3 ){
      digitalWrite (led2,LOW);
      digitalWrite (led3,HIGH);
    }


    if (count == 4){
      digitalWrite (led3,LOW);
      digitalWrite (led4,HIGH);
    }


    if (count == 5){
      digitalWrite (led4,LOW);
      count = 0;
    }


if ((tasterstatus2 == HIGH) && (count == 1)){
  
  
  digitalWrite (led1,HIGH);
  digitalWrite (led2,LOW);
  digitalWrite (led3,LOW);
  digitalWrite (led4,LOW);
  delay (1000);


  digitalWrite (led1,LOW);
  digitalWrite (led2,HIGH);
  delay (1000);
  digitalWrite (led2,LOW);
  digitalWrite (led3,HIGH);
  delay (1000);
  digitalWrite (led3,LOW);
  digitalWrite (led4,HIGH);
  delay (1000);
  digitalWrite (led4,LOW);
}








    if ((tasterstatus2 == HIGH ) &&( count == 2)){


      digitalWrite (led1,LOW);
      digitalWrite (led2,HIGH);
      digitalWrite (led3,LOW);
      digitalWrite (led4,LOW);
      delay (1000);
      digitalWrite (led3,HIGH);
      digitalWrite (led2,LOW);
      delay (1000);
      digitalWrite (led3,LOW);
      digitalWrite (led4,HIGH);
      delay (1000);
      digitalWrite (led4,LOW);
      digitalWrite (led1,HIGH);
      delay (1000);
      digitalWrite (led1,LOW);
      
    }




    if ((tasterstatus2 == HIGH) && (count == 3)){


digitalWrite (led1,LOW);
digitalWrite (led2,LOW);
digitalWrite (led3,HIGH);
digitalWrite (led4,LOW);
delay (1000);


digitalWrite (led3,LOW);
digitalWrite (led4,HIGH);
delay (1000);


digitalWrite (led4,LOW);
digitalWrite (led1,HIGH);
delay (1000);


digitalWrite (led1,LOW);
digitalWrite(led2,HIGH);
delay (1000);


digitalWrite (led2,LOW);
delay (1000);
}


if ((tasterstatus2 == HIGH) && (count == 4)){


  digitalWrite (led1,LOW);
  digitalWrite (led2,LOW);
  digitalWrite (led3,LOW);
  digitalWrite (led4,HIGH);
  delay (1000);


  digitalWrite (led4,LOW);
  digitalWrite (led1,HIGH);
  delay (1000);


  digitalWrite (led1,LOW);
  digitalWrite (led2,HIGH);
  delay (1000);


  digitalWrite (led2,LOW);
  digitalWrite (led3,HIGH);
  delay (1000);


  digitalWrite (led3,LOW);
  
}
    
        
 
Technik, Arduino, schalten, Arduino Uno
Arduino if Bedinung mit 2 Werten ?

ich schreibe gerade einen Sketch das man mit einem Taster 4 LEDS weiterschalten

und wen der 2 Taster gedrückt wird blinken die anderen LEDS .

aber bei der if Bedingung bei der beide werte überprüft werden funktioniert es nicht

Weiß da jemand weiter

Das ist der Sketch:

int taster1=7;
int taster2=8;


int tasterstatus1=0;
int tasterstatus2=0;


int led1=12;
int led2=11;
int led3=10;
int led4=9;


bool oldButtonState = HIGH;
bool newButtonState;
int count = 0;


void setup() {
 pinMode (taster1,INPUT);
pinMode (taster2,INPUT_PULLUP);




pinMode (led1,OUTPUT);
pinMode (led2,OUTPUT);
pinMode (led3,OUTPUT);
pinMode (led4,OUTPUT);
}


void loop() {
  newButtonState = digitalRead(taster1);
  
  tasterstatus2 = digitalRead(taster2);
  
  if (oldButtonState == HIGH && newButtonState == LOW) {
    count++;
    oldButtonState = newButtonState;


    if (count == 3) {
      digitalWrite(led1, HIGH);
    }
    if (count == 4) {
      digitalWrite(led1, LOW);
      digitalWrite (led2,HIGH);
    }


    if (count == 5 ){
      digitalWrite (led2,LOW);
      digitalWrite (led3,HIGH);
    }


    if (count == 6){
      digitalWrite (led3,LOW);
      digitalWrite (led4,HIGH);
    }


    if (count == 7){
      digitalWrite (led4,LOW);
    }




    


    if ((tasterstatus2 == HIGH && count == 3)){
      digitalWrite (led1,HIGH);
      delay (1000);
      digitalWrite (led1,LOW);
      digitalWrite (led2,HIGH);
      delay (1000);
      digitalWrite (led2,LOW);
      digitalWrite (led3,HIGH);
      delay (1000);
      digitalWrite (led3,LOW);
      digitalWrite (led4,HIGH);
      delay (1000);
      digitalWrite (led4,LOW);
    }




    if ((tasterstatus2 == HIGH) && (count == 4)){
      digitalWrite (led2,HIGH);
      delay (1000);
      digitalWrite (led2,LOW);
      digitalWrite (led3,HIGH);
      delay (1000);
      digitalWrite (led3,LOW);
      digitalWrite (led4,HIGH);
      delay (1000);
      digitalWrite (led4,LOW);
      digitalWrite (led1,HIGH);
      delay (1000);
      digitalWrite (led1,LOW);
    }
    
        
    delay(100);
  } else if (oldButtonState == LOW && newButtonState == HIGH) {
    oldButtonState = newButtonState;
  }
}
Computer, Programm, Arduino

Meistgelesene Beiträge zum Thema Arduino