Соеденить два кода в один

danielparker96
Offline
Зарегистрирован: 27.03.2014

Простите, я гребанный новичек и не знаю сейчас как справится с  этой проблемой

первый код-это цикл загорания светодиодов(сам писал и причем видно, что код написан слишком тупо и я понимаю, что есть варианты намного проще, подскажите для примера)

второй код-это цикл пищалки (buzzer), которая играет звездный марш из звездных войн, но в этом коде уже присутствует цикл для лампочки.(скачанная)



уберите его пожалуйста и замените на цикл из первого кода

то есть должны одновременно пищать пищалки и загораться светодиоды из первого кода)



https://drive.google.com/file/d/0B-3iOq5C2Yh-NHhwazF3emZWM1k/edit?usp=sharing  

https://drive.google.com/file/d/0B-3iOq5C2Yh-S0k3VFFGY3FtQVU/edit?usp=sharing

danielparker96
Offline
Зарегистрирован: 27.03.2014

Life23
Offline
Зарегистрирован: 10.08.2013

а где коды то?

danielparker96
Offline
Зарегистрирован: 27.03.2014

это императорский марш

int ledPin = 13; //inserire il pin del led


int speakerPin = 17;//inserire il pin del buzzer

#define c 261
#define d 294
#define e 329
#define f 349
#define g 391
#define gS 415
#define a 440
#define aS 455
#define b 466
#define cH 523
#define cSH 554
#define dH 587
#define dSH 622
#define eH 659
#define fH 698
#define fSH 740
#define gH 784
#define gSH 830
#define aH 880

void setup()     
{     

  pinMode(ledPin, OUTPUT);
  pinMode(speakerPin, OUTPUT);
}     
      

void loop()
{
  march();
}     
      
void beep (unsigned char speakerPin, int frequencyInHertz, long timeInMilliseconds)
{ 
  
    digitalWrite(ledPin, HIGH);
    
    int x;     
    long delayAmount = (long)(1000000/frequencyInHertz);
    long loopTime = (long)((timeInMilliseconds*1000)/(delayAmount*2));
    for (x=0;x<loopTime;x++)     
    {     
        digitalWrite(speakerPin,HIGH);
        delayMicroseconds(delayAmount);
        digitalWrite(speakerPin,LOW);
        delayMicroseconds(delayAmount);
    }     
    
  
    digitalWrite(ledPin, LOW);
        
   
    delay(20);
}     
      
void march()
{     
    
    beep(speakerPin, a, 500); 
    beep(speakerPin, a, 500);     
    beep(speakerPin, a, 500); 
    beep(speakerPin, f, 350); 
    beep(speakerPin, cH, 150);
    
    beep(speakerPin, a, 500);
    beep(speakerPin, f, 350);
    beep(speakerPin, cH, 150);
    beep(speakerPin, a, 1000);
    
    beep(speakerPin, eH, 500);
    beep(speakerPin, eH, 500);
    beep(speakerPin, eH, 500);    
    beep(speakerPin, fH, 350); 
    beep(speakerPin, cH, 150);
    
    beep(speakerPin, gS, 500);
    beep(speakerPin, f, 350);
    beep(speakerPin, cH, 150);
    beep(speakerPin, a, 1000);
    
    beep(speakerPin, aH, 500);
    beep(speakerPin, a, 350); 
    beep(speakerPin, a, 150);
    beep(speakerPin, aH, 500);
    beep(speakerPin, gSH, 250); 
    beep(speakerPin, gH, 250);
    
    beep(speakerPin, fSH, 125);
    beep(speakerPin, fH, 125);    
    beep(speakerPin, fSH, 250);
    delay(250);
    beep(speakerPin, aS, 250);    
    beep(speakerPin, dSH, 500);  
    beep(speakerPin, dH, 250);  
    beep(speakerPin, cSH, 250);
    
    beep(speakerPin, cH, 125);  
    beep(speakerPin, b, 125);  
    beep(speakerPin, cH, 250);      
    delay(250);
    beep(speakerPin, f, 125);  
    beep(speakerPin, gS, 500);  
    beep(speakerPin, f, 375);  
    beep(speakerPin, a, 125); 
    
    beep(speakerPin, cH, 500); 
    beep(speakerPin, a, 375);  
    beep(speakerPin, cH, 125); 
    beep(speakerPin, eH, 1000);
    
    beep(speakerPin, aH, 500);
    beep(speakerPin, a, 350); 
    beep(speakerPin, a, 150);
    beep(speakerPin, aH, 500);
    beep(speakerPin, gSH, 250); 
    beep(speakerPin, gH, 250);
    
    beep(speakerPin, fSH, 125);
    beep(speakerPin, fH, 125);    
    beep(speakerPin, fSH, 250);
    delay(250);
    beep(speakerPin, aS, 250);    
    beep(speakerPin, dSH, 500);  
    beep(speakerPin, dH, 250);  
    beep(speakerPin, cSH, 250);
    
    beep(speakerPin, cH, 125);  
    beep(speakerPin, b, 125);  
    beep(speakerPin, cH, 250);      
    delay(250);
    beep(speakerPin, f, 250);  
    beep(speakerPin, gS, 500);  
    beep(speakerPin, f, 375);  
    beep(speakerPin, cH, 125); 
           
    beep(speakerPin, a, 500);            
    beep(speakerPin, f, 375);            
    beep(speakerPin, c, 125);            
    beep(speakerPin, a, 1000);    
}

а это мои лампочки

int l16 = 16;
int l15 = 15;
int l14 = 14;
int l13 = 13;
int l12 = 12;
int l11 = 11;
int l10 = 10;
int l9 = 9;
int l8 = 8;
int l7 = 7;
int l6 = 6;
int l5 = 5;
int l4 = 4;
int l3 = 3;
int l2 = 2;
void setup(){
  pinMode(l16, OUTPUT);
  pinMode(l15, OUTPUT);
  pinMode(l14, OUTPUT);
  pinMode(l13, OUTPUT);
  pinMode(l12, OUTPUT);
  pinMode(l11, OUTPUT);
  pinMode(l10, OUTPUT);
  pinMode(l9, OUTPUT);
  pinMode(l8, OUTPUT);
  pinMode(l7, OUTPUT);
  pinMode(l6, OUTPUT);
  pinMode(l5, OUTPUT);
  pinMode(l4, OUTPUT);
  pinMode(l3, OUTPUT);
  pinMode(l2, OUTPUT);}
  
void loop(){
  digitalWrite(l16,LOW);
  digitalWrite(l3, HIGH);
  digitalWrite(l7, HIGH);
  delay(50);
  digitalWrite(l3, LOW);
  digitalWrite(l8, HIGH);
  delay(50);
  digitalWrite(l7, LOW);
  digitalWrite(l6, HIGH);
  delay(50);
  digitalWrite(l8, LOW);
  digitalWrite(l13, HIGH);
  delay(50);
  digitalWrite(l6, LOW);
  digitalWrite(l9, HIGH);
  delay(50);
digitalWrite(l13, LOW);
  digitalWrite(l5, HIGH);
  delay(50);
digitalWrite(l9, LOW);
  digitalWrite(l2, HIGH);
  delay(50);
digitalWrite(l5, LOW);
  digitalWrite(l3, HIGH);
  delay(50);
digitalWrite(l2, LOW);
  digitalWrite(l10, HIGH);
  delay(50);
digitalWrite(l3, LOW);
  digitalWrite(l12, HIGH);
  delay(50);
digitalWrite(l10, LOW);
  digitalWrite(l11, HIGH);
  delay(50);
digitalWrite(l12, LOW);
  digitalWrite(l4, HIGH);
  delay(50);
digitalWrite(l11, LOW);
  digitalWrite(l14, HIGH);
  delay(50);
digitalWrite(l4, LOW);
  digitalWrite(l15, HIGH);
  delay(50);
digitalWrite(l14, LOW);
  digitalWrite(l16, HIGH);
  delay(50);
digitalWrite(l15, LOW);
  digitalWrite(l3, HIGH);
  delay(50);}

  

 

 

com
Offline
Зарегистрирован: 06.09.2013

danielparker96 пишет:

уберите его пожалуйста и замените на цикл из первого кода

то есть должны одновременно пищать пищалки и загораться светодиоды из первого кода)



не получится простым сложением циклов, хоть чего делай. потому что когда ардуина делает delay(), она не может ни мигать, ни пищать. может получиться только сначала промигали от начала до конца в тишине, потом пропищали в темноте. чтобы было одновременно - раскладывать все по тактам и совмещать такты

inspiritus
Offline
Зарегистрирован: 17.12.2012

Можно попробовать псевдомультизадачность с библой TimerOne кажется. Но все равно может заикаться периодически .