Ви не увійшли.
Здравствуйте! 
Помогите решить проблему с подключением такой схемы к блоку на 12 вольт. 
Проблема в том, что при подключении к блоку, вентиляторы начинают постоянно крутиться, а постепенно увеличивать скорость, и очень сильно начинает греться вся плата, особенно стабилизатор напряжения(палец можно обжечь). 
Идея программы в том, что при поднесении к каждому из датчиков поочереди, кулеры начинают крутиться быстрее и быстрее.
при работе от USB одного вентилятора - все ок.
на схеме поставил двигатель, но в жизни - это 9 кулеров от компа + нижний светодиод - это 3 светодиодных ленты по 20 см длиной.
Не судите строго) первый раз строил схему и играюсь с ардуино по интрукции из "матрешки", дополняя своими задумками)
Буду рад критике и учениям от более продвинутых)

Код программы:
int IRpin = A1; // IR photodiode on analog pin A0
int IRemitter = 2;// IR emitter LED on digital pin 2
int ambientIR; // variable to store the IR coming from the ambient
int obstacleIR; // variable to store the IR coming from the object
int value[10]; // variable to store the IR values
int distance; // variable that will tell if there is an obstacle or not
int fanpin = 11;
int flag=0;
int firstled = 7;
int ledcount = 5;
int pause;
void blink(int ledpin)
{
  digitalWrite(ledpin,HIGH);
  delay(200);
  digitalWrite(ledpin,LOW);
}
void setup(){
  for(int i=0;i<ledcount;i++)
{
  pinMode(i+firstled,OUTPUT);
  blink(i+firstled);
}
digitalWrite(firstled,HIGH);
pinMode(IRemitter,OUTPUT);
Serial.begin(9600); // initializing Serial monitor
pinMode(fanpin,OUTPUT);
TCCR2B = (TCCR2B & 0xF8) | 0x01;
//TCCR2B = TCCR2B & B11111000 | B00000001;//pwm частота arduino 32КГц
//TCCR0B = TCCR0B & B11111000 | B00000001;
delay(100);
}
void loop(){
  
distance = readIR(5); // calling the function that will read the distance and passing the «accuracy» to it
Serial.println(distance); // writing the read value on Serial monitor
buzzer();// uncomment to activate the buzzer function
}
int readIR(int times){
for(int x=0;x<times;x++)
{
digitalWrite(IRemitter,LOW); // turning the IR LEDs off to read the IR coming from the ambient
delay(2); // minimum delay necessary to read values
ambientIR = analogRead(IRpin); // storing IR coming from the ambient
digitalWrite(IRemitter,HIGH); // turning the IR LEDs on to read the IR coming from the obstacle
delay(2); // minimum delay necessary to read values
obstacleIR = analogRead(IRpin); // storing IR coming from the obstacle
value[x] = ambientIR-obstacleIR; // calculating changes in IR values and storing it for future average
distance+=value[x];
//Serial.println(ambientIR);
//Serial.println(obstacleIR);
//delay(100);
}
/*for(int x=0;x<times;x++)
{ // calculating the average based on the «accuracy»
}*/
return(distance/times); // return the final value
}
//— Function to sound a buzzer for audible measurements —//
void buzzer(){
  
    switch(flag){
      case 0:
      if(distance>7)
      {
        break;
      }
      else{
        
        pause+=1;
      }
      if(pause>10){
        if(distance>3){
      flag+=102;
      analogWrite(fanpin,flag);
      Serial.println("FIRST");
      delay(100);
      IRemitter = 3;
      pinMode(3,OUTPUT);
      IRpin= A2;
      digitalWrite(firstled,LOW);
      delay(200);
      digitalWrite(8,HIGH);
      pause =0;
      }}
      break;
    case 102:
    if(distance>7)
      {
        break;
      }
      else{
        pause+=1;
      }
      if(pause>10){
        if(distance>4){
        flag+=51;
        analogWrite(fanpin,flag);
        Serial.println("SECOND");
        delay(100);
      
    IRemitter = 4;
    pinMode(4,OUTPUT);
    IRpin= A3;
    digitalWrite(8,LOW);
    delay(200);
    digitalWrite(9,HIGH);
    pause=0;
    }}
    break;
    case 153:
     if(distance>7)
      {
        break;
      }
      else{
        pause+=1;
      }
      if(pause>10)
      {
        if(distance>4){
    flag+=51;
        analogWrite(fanpin,flag);
    IRemitter = 5;
    pinMode(5,OUTPUT);
    IRpin= A4;
    digitalWrite(9,LOW);
    delay(200);
    digitalWrite(10,HIGH);
    Serial.println("Third");
    pause=0;
    }}
    break;
    case 204:
     if(distance>7)
      {
        break;
      }
      else{
        pause+=1;
      }
      if(pause>10){
        if(distance>4){
    flag+=51;
        analogWrite(fanpin,flag);
    IRemitter = 5;
    pinMode(5,OUTPUT);
    IRpin= A4;
    digitalWrite(9,LOW);
    delay(200);
    digitalWrite(10,HIGH);
    Serial.println("Four");
    pause=0;
    }}
    break;
    /*case 204:
    IRemitter = 6;
    pinMode(6,OUTPUT);
    IRpin= A5;
    digitalWrite(10,LOW);
    delay(200);
    digitalWrite(11,HIGH);
    break;*/
    }
  //Serial.println(flag);
  if(flag==255)
  {
    for(int j=0;j<3;j++)
    {
    for(int i=5;i<8;i++)
    {
      digitalWrite(i,HIGH);
    }
    delay(1000);
    for(int i=5;i<8;i++)
    {
      digitalWrite(i,LOW);
    }
  }
  flag+=1;
  }
  delay(10);
  
}
//end