Arduıno magnetic

Hello friends;
My problem is that the Arduino creates a magnetic field.
By multiple I mean 5 or 6 LEDs, some blinking, some solid.
I tried Mega Uno Pro mini nano and many codes but it didn't work.
The problem is:
Interestingly, when I touch the Arduino with my hand, the LEDs turn on, but when I pull it off, they turn off.
I did pull ups and pull downs but it still didn't work.
Of course there is a solution to this. I don't think it's just me.
If you can help it would be greatly appreciated.

Welcome to the forum

Please post your sketch, using code tags when you do, and a schematic of your circuit

I want to make an RC airplane light system. If you have software, please share it.

This forum is not a code writing service but you will get help to get your project working if you post the details as requested

1 Like

And maybe not change the subject and language from post to post as that will get you ignored just like a troll even if you're not.

There are different forums on the site for different languages.

So far, the OP may as well be ChatGPT.

int led1=2;
int led2=3;
int led3=4;
int btn=5;
int data=0;
int sayac=0;//butona kaç defa basıldığını tutacak değişken
void setup() {
pinMode(led1,OUTPUT);
pinMode(led2,OUTPUT);
pinMode(led3,OUTPUT);
Serial.begin(9600);
}
void loop() {
data=digitalRead(btn);//butona basılıp basılmadığını okur
if(data==1){
sayac++;
delay(400);// koşul sağlanırsa 400ms'de bir değeri 1 artırır
Serial.println(sayac); //Sayac değerini seri port ekranına yazar
}
switch (sayac){ /*switch değeri kaç olursa case olarak o değer
çalışır*/
case 1:{
digitalWrite(led1,1);
digitalWrite(led2,0);
digitalWrite(led3,0);
break;}
case 2:{
digitalWrite(led1,0);
digitalWrite(led2,1);
digitalWrite(led3,0);
break;}
case 3:{
digitalWrite(led1,0);
digitalWrite(led2,0);
digitalWrite(led3,1);
break;}
default:{ //case değerleri oluşmazsa bu bölümdeki kodlar

digitalWrite(led1,0);
digitalWrite(led2,0);
digitalWrite(led3,0);
sayac=0;
break;
}
}
}

this code works
but I want this code to work

#include <MsTimer2.h>

int nav1 = 2; // Sol kanat ucu, kırmızı NAV light
int nav2 = 3; // Sağ kanat ucu yeşil NAV light
int strobe1 = 4; // Sol kanat ucu beyaz strobe light
int strobe2 = 5; // Sağ kanat ucu beyaz strobe light
int strobe3 = 6; // Gövde altı kırmızı strobe light
int beacon = 10; // Dikey stab ucu kırmızı beacon LED. PWM çıkışlı uç olmalı.
int rxpin = 8; // Alıcıdan gelen kontrol sinyali girişi

int rxflag = 0; // chkrx altprogramında beklemeyi engellemek için flag
int rxpwm = 0;
int mode = 0; // 0: LED'ler OFF. 1: NAV. 2: Beacon. 4: Strobe => NAV + Beacon + Strobe = 1 + 2 + 4 = 7
int beaconvalue = 33; // Beacon için minimum ışık düzeyi
int beaconstep1 = 11; // Beacon adımı
int beaconstep2 = 37;
int yon = 1; // Beacon artış azalış değişkeni. 1 ya da -1
int rxyon = 1;
int strobetiming; // Şu an için kullanılmıyor
unsigned long timer; // Genel zamanlama değişkeni



#define buttonPin 9 // 9 Nolu Dijital porta bağlı buton
int deger; // Buton degerinin saklanacağı değişken

void setup () {
//  Serial.begin(9600);
    deger=digitalRead(buttonPin); // deger degiskeni ilk olarak HIGH olacaktır. Butona basıldığında LOW olur
   

    pinMode(nav1, OUTPUT);
    pinMode(nav2, OUTPUT);
    pinMode(strobe1, OUTPUT);
    pinMode(strobe2, OUTPUT);
    pinMode(strobe3, OUTPUT);
    pinMode(buttonPin,INPUT);
    //pinMode(beacon, OUTPUT); //analogWrite için OUTPUT tanımlamaya gerek yok.
    MsTimer2::set(90, beaconwrite);
    MsTimer2::start();
}

void loop() {
//  Serial.println(mode);
    switch (mode) {
        case 1: // NAV = 1
            navs_on();
            break;
        case 2: // Beacon = 2
            mode = mode + 1; // Sadece beacon kullanılmıyor, dolayisi ile bir ust mode seviyesine gec, bunu da ilerisi icin hazir tut
            break;
        case 3: // NAV + Beacon = 1 + 2 = 3
            navs_on();
            break;
        case 4: // Strobe = 4
            mode = mode + 1; // Sadece Strobe kullanılmıyor, dolayisi ile bir ust mode seviyesine gec, bunu da ilerisi icin hazir tut
            break;
        case 5: // NAV + Strobe = 1 + 4 = 5
            mode = mode + 1; // NAV + Strobe kullanılmıyor, dolayisi ile bir ust mode seviyesine gec, bunu da ilerisi icin hazir tut
            break;
        case 6: // Beacon + Strobe = 2 + 4 = 6
            mode = mode + 1; // Beacon + Strobe kullanılmıyor, dolayisi ile bir ust mode seviyesine gec, bunu da ilerisi icin hazir tut
            break;
        case 7: // NAV + Beacon + Strobe = 1 + 2 + 4 = 7
            navs_on();
            strobeon();
            break;
        default: // LEDs off
            switchoff();
    }
}

void switchoff() { // Tüm LED'leri kapatan altprogram
    digitalWrite(nav1, LOW);
    digitalWrite(nav2, LOW);
    digitalWrite(strobe1, LOW);
    digitalWrite(strobe2, LOW);
    digitalWrite(strobe3, LOW);
    //digitalWrite(beacon, LOW); // PWM kullanılacaksa, karisiklik olmaması icin digital write kullanilmamali
    analogWrite(beacon, 0);
}

void chkrx() { // Alıcı sinyaline göre mode değişkenini düzenleyen altprogram
    rxpwm = pulseIn(rxpin, HIGH);
    if(rxpwm < 1500) {
        rxflag = 1;
    } else if(rxpwm >= 1500 && rxflag == 0) {
        return;
    } else if(rxpwm >= 1500 && rxflag == 1) {
        rxflag = 0;
        mode = mode + 1;
        if(mode > 7) {
            mode = 0;
        }
    }
}

void navs_on() { // NAV isiklarini ac
    digitalWrite(nav1, HIGH);
    digitalWrite(nav2, HIGH);
}

void beaconwrite() { // Beacon LED2ine analog çıkış veren ve her seferinde parlaklığı bir artıran ya da azaltan altprogram
    chkrx();
    //  if(mode == 0);
    //  {
    //    switchoff();
    //    return;
    //  }
    if((mode == 1) || (mode == 4) || (mode == 5)) {
        analogWrite(beacon, 0); // PWM icin digitalWrite yerine analogWrite kullanilmali, kodun butunlugu icin heryerde ayni olmali
        return;
    }
    if((mode == 2) || (mode == 3) || (mode == 6) || (mode == 7)) {
        analogWrite(beacon, beaconvalue);
        beaconvalue = beaconvalue + (yon * 34);
        if(beaconvalue >= 255) {
            yon = yon * (-1);
            beaconvalue = 255;
        } else if(beaconvalue < 10) {
            yon = yon * (-1);
            beaconvalue = 10;
        }
    }
}

void strobeon() {
    int z = 0;

    digitalWrite(strobe1, HIGH);
    digitalWrite(strobe2, HIGH);
    delay(60);
    
    digitalWrite(strobe1, LOW);
    digitalWrite(strobe2, LOW);
    delay(60);

    digitalWrite(strobe1, HIGH);
    digitalWrite(strobe2, HIGH);
    delay(60);
    
    digitalWrite(strobe1, LOW);
    digitalWrite(strobe2, LOW);
    delay(60);

    digitalWrite(strobe1, HIGH);
    digitalWrite(strobe2, HIGH);
    delay(60);
    
    digitalWrite(strobe1, LOW);
    digitalWrite(strobe2, LOW);
    delay(60);

    digitalWrite(strobe3, HIGH);
    delay(60);
    
    digitalWrite(strobe3, LOW);
    delay(180);

    digitalWrite(strobe3, HIGH);
    delay(60);
    
    digitalWrite(strobe3, LOW);
    delay(380);
}

Your second sketch initially sets mode to zero. As you do not have a case 0: the default case is used and the switchoff() function is called. That function does not change value of mode so the code stays in the default case for ever and repeatedly calls switchoff()

That is a clear sign of incorrect wiring or open connections.

1 Like

You read the button before you set the button pinmode.

Arduino on AVR chips especially has very little RAM and an 8 bit processor. So WHY use int variables for small values like pin numbers where byte variables use half as much RAM and run Twice As Fast?

by default all IO pins start up as INPUT LOW, the z-state.