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
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.
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.