wie kann ich zwei programme (sketes) zusammenführen Arduino?

ich will zwei programme zusamen führen wie kann ich das ?(beide programme fonktioniren einzeln) Hier sind die programme: 1. #include #include

Servo ServoMotor; char* password = "123"; // change the password here, just pick any 3 numbers char* password1 = "456"; char* password2 = "789"; int position = 0; const byte ROWS = 4; const byte COLS = 4; char keys[ROWS][COLS] = { {'1','2','3','A'}, {'4','5','6','B'}, {'7','8','9','C'}, {'*','0','#','D'} };

byte rowPins[ROWS] = { 8, 7, 6, 9 }; byte colPins[COLS] = { 5, 4, 3, 2 }; Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS ); int RedpinLock = 12; int GreenpinUnlock = 13;

void setup() { pinMode(RedpinLock, OUTPUT); pinMode(GreenpinUnlock, OUTPUT); ServoMotor.attach(11); LockedPosition(true); }

void loop() { char key = keypad.getKey(); if (key == '*' || key == '#') { position = 0; LockedPosition(true); } if (key == password[position]) { position ++; } if (key == password1[position]) { } if (key == password2[position]) { position ++; } if (position == 3) { LockedPosition(false); } delay(100); } void LockedPosition(int locked) { if (locked) { digitalWrite(RedpinLock, HIGH); digitalWrite(GreenpinUnlock, LOW); ServoMotor.write(11); } else { digitalWrite(RedpinLock, LOW); digitalWrite(GreenpinUnlock, HIGH); ServoMotor.write(90); } }

2.

int licht;

void setup() { Serial.begin(9600); pinMode(13,OUTPUT);

}

void loop() { // put your main code here, to run repeatedly: licht = analogRead(0); Serial.print (licht),delay;

if (licht < 940) { digitalWrite(13,HIGH); } else { digitalWrite(13, LOW); }}

Programmieren, arduino
5 Antworten
Problem mit Arduino?

Hallo,

in der Schule müssen wir eine FIP (fachinterne Prüfung ) in Technik machen.

Meine Gruppe und ich haben uns dazu entschlossen, einen Arduino-Tresor zu bauen. Da ich schon ein wenig Erfahrung habe, sollte ich natürlich programmieren.

Ich arbeite gerade daran, dass man mit einer Folientastatur auf einem LCD-Display den Code für das Schloss eingeben kann.

Ich wollte diesen testen, doch ich kann den Code nicht auf das Arduino-Board hochladen.

Sketch :

#include <LiquidCrystal_I2C.h>
#include <Keypad.h>

// Hier wird die Größe des Keypads definiert
const byte COLS = 4; // 4 Spalten
const byte ROWS = 4; // 4 Zeilen

// Die Ziffern und Zeichen des Keypads werden eingegeben:
char hexaKeys[ROWS][COLS] = {
  { 'D', '#', '0', '' },
  { 'C', '9', '8', '7' },
  { 'B', '6', '5', '4' },
  { 'A', '3', '2', '1' }
};
byte colPins[COLS] = { 2, 3, 4, 5 }; // Definition der Pins für die 4 Spalten
byte rowPins[ROWS] = { 6, 7, 8, 9 }; //Definition der Pins für die 4 Zeilen
char Taste; // Taste ist die Variable für die jeweils gedrückte Taste.
Keypad Tastenfeld = Keypad(makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);

// Das Keypad kann absofort mit "Tastenfeld" angesprochen werden
LiquidCrystal_I2C lcd(0x27, 16, 2);

void setup()
{
  lcd.begin();
  Taste = Tastenfeld.getKey();

  if (Taste)
    lcd.print("Passwort:");

  lcd.setCursor(0, 1);
  lcd.print(Taste);
  lcd.println();
}

Für diesen Code habe ich einen Sketch für die Folientastatur heruntergeladen und ein wenig verändert.

Könntet ihr mir vielleicht sagen, woran das liegt und auch Verbesserungsvorschläge schicken?

Computer, Technik, Programmieren, arduino, Technologie
2 Antworten
Arduino Programm Hilfe?

hallo, in der Schule bauen wir gerade einen Tresor und programmieren diesen mit einem Arduino. Leider kommt immer eine Fehlermeldung wenn wir das Programm auf den Arduino hochladen wollen.

#include <Keypad.h>

#include <Servo.h>

 const byte PINLENGTH = 4;

char pinCode[PINLENGTH+1] = {'0','8','1','5'};

 char keyBuffer[PINLENGTH+1] = {'-','-','-','-'};

 const byte ROWS = 4;

const byte COLS = 4;

char hexaKeys[ROWS][COLS] = {

 {'1','2','3','A'},

 {'4','5','6','B'},

 {'7','8','9','C'},

 {'','0','#','D'}

};

byte rowPins[ROWS] = {9, 8, 7, 6};

byte colPins[COLS] = {5, 4, 3, 2};

 const int greenPin = 12;

const int redPin = 13;

const int servoPin = 11;

const int angleClosed = 30;

const int angleOpen = 120;

const int openDelay = 3000;

Servo myservo;

Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);

 

void setup(){

 Serial.begin(9600);

 

 pinMode(greenPin, OUTPUT);

 pinMode(redPin, OUTPUT);

 digitalWrite(greenPin, LOW);

 digitalWrite(redPin, LOW);

 myservo.attach(servoPin);

 myservo.write(angleClosed);

}

 

void loop(){

 

 char customKey = customKeypad.getKey();

 

 if (customKey) {

   if ((int(customKey) >= 48) && (int(customKey) <= 57)){

     addToKeyBuffer(customKey);

   }

 

   else if (customKey == '#') {

     checkKey();

   }

 }

}

 

void addToKeyBuffer(char inkey) {

 Serial.print(inkey);

 Serial.print(" > ");

 for (int i=1; i<PINLENGTH; i++) {

   keyBuffer[i-1] = keyBuffer[i];

 }

 

 keyBuffer[PINLENGTH-1] = inkey;

 Serial.println(keyBuffer);

}

void checkKey() {

  if (strcmp(keyBuffer, pinCode) == 0) {

   Serial.println("CORRECT");

     pinCorrect();

 }

 else {

   Serial.println("WRONG!");

   pinWrong();

 }

 for (int i=0; i < PINLENGTH; i++) {

   keyBuffer[i] = '-';

 }

}

void pinCorrect() {

 myservo.write(angleOpen);

 digitalWrite(greenPin, HIGH);

 delay(openDelay);

 myservo.write(angleClosed);

 digitalWrite(greenPin, LOW);

}

void pinWrong() {

 for (int i=0; i<3; i++) {

   digitalWrite(redPin, HIGH);

   delay(50);

   digitalWrite(redPin, LOW); 

   delay(20);

 }

}

Fehlermeldung:

Problem beim Hochladen auf das Board


Schule, Programmieren, arduino, Tresor
2 Antworten
LCD Controller für Laptop Bildschirm?

Guten Tag sehr geehrte Comunity,

ich habe vor aus einem Bildschirm eines defekten Laptops und einem alten PC einen kleinen Rechner zu bauen.

Ich habe dafür das Display aus dem Laptop ausgebaut und würde nun einen universal LCD Controller nutzen, um diesen per VGA an das Motherboard des PCs anzuschließen. Ich würde mich dazu an einem Youtube Video orientieren, doch es gibt ein kleines Problem. (Das Video: https://www.youtube.com/watch?v=q0HKOtEgJ00 )

Der Screen wird im Video per LVDS Kabel an den Controller angeschlossen, was bei mir mit einem 30 Pin LVDS Kabel möglich wäre. Im Video wird jedoch der Strom ebenfalls über das LVDS Kabel gelifert, was bei meinem Display glaube ich nicht der Fall ist.

Es gibt bei meinem Display einen extra Anschluss am Bildschirm mit passender Wechselrichterplatine, welche ich ebenfalls ausgebaut habe. (Bilder unten) Wäre es möglich, die Wechselrichterplatine an den LCD Controller anzuschließen? Die Wechselrichterplatine geht von 10 Pin aus dem Laptop zu 2 Pin (+/-) zum Screen.

Denken Sie, die Wechselrichterplatine des Screens im Video ist mit im Screen verbaut, oder denken Sie, sie ist mit am LCD Controller verbaut? Können Sie mir sagen, was ich wie zu verkabeln hätte?

Ich würde ebenso extra Buttons zur Steuerung des Bildschirms wie im Video beschrieben nutzen.

LVDS Kabel, welches nutzen würde: http://www.ebay.de/sch/i.html?_from=R40&_sacat=0&_nkw=30+pin+lvds&rt=nc&LH_PrefLoc=1

Universal LCD Controller : https://www.banggood.com/de/V29-Universal-LCD-Controller-Board-TV-Motherboard-Free-Program-Version-p-975862.html?rmmds=detail-left-hotproducts

Buttons: https://www.banggood.com/de/Universal-7-Keys-V29-V59-TV-Switch-Keypad-Board-With-Interface-p-955688.html?rmmds=detail-top-buytogether-auto

Die Teile sind leider alle nur im Ausland zu haben, außer Sie können mir einen Tipp geben wo man die Teile her bekommt. Der Laptop war von Tarox, Wahrscheinlich eine Untermarke von Asus.

MfG 4LpHa

LCD Controller für Laptop Bildschirm?
PC, Computer, DIY, Bildschirm, Elektronik, Elektrotechnik, screen, LCD
1 Antwort
Tresor mit Arduino programmieren?

Wir müssen in der Schule einen Tresor mit dem Arduino programmieren, dafür haben wir ein 4x4 Tastenfeld und einen Motor ( Servo Motor). wir haben ein Programm geschrieben, doch dieses Funktioniert nicht. wir haben im Internet nachgeschaut und unsere Lehrer gefragt doch, aber nichts hat uns geholfen. unser Programm sagt das wir das Keyboard nicht in der library haben, doch dies haben wir. es wäre nett wenn uns jemand bei unserem Problem helfen könnte.

das ist unser Programm

#include <Keyboard.h>                  //Keypad Library wir eingebunden         
#include <Servo.h>                     //Servo Motor Library wird eingebunden
                 
Servo Motor;                           //Servo wird ab jetzt mit "Motor" angesprochen
char* Key = "2412";                   //Passwort wird festgelegt: 2412
int position = 0;
const byte COLS = 4;                   //Die Anzahl der Spalten wird deiniert: 4
const byte ROWS = 4 ;                   //Die Anzahl der Reihen wird definiert: 4
char hexakeys [COLS][ROWS]={                 //Die Ziffern und Zahle des Tastenfeldes werden definiert
("1","2","3","A"),
("4","5","6","B"),
("7","8","9","C"),
("","0","#","D")
};
byte colsPins[COLS]={1, 2, 3, 4};        //Pins an welche das Tastenfeld angeschlossen ist werden definieren
byte rowsPins[ROWS] ={5, 6, 7, 8};        //Pins an welche das Tastenfeld angeschlossen ist werden definieren
 
void setup() {
pinMode(11,OUTPUT);                      //LED als Ausgang definiert
pinMode (12,OUTPUT);                     //LED als Ausgang definiert
pinMode (13, OUTPUT);                    //LED als Ausgang definiert
Motor.attach (10);                       //Motor an Pin 10 angeschlossen
pinMode(1,INPUT);
pinMode(5,INPUT);
pinMode(6,INPUT);
pinMode(7,INPUT);
pinMode(8,INPUT);
Keyboard.begin ();
}
void loop() {
 
char Key = Keyboard.get Key();
}
if (key == '' || key == '#');           //wenn /# gedrückt wird dann
{
 position = 0;
 setlocked (true);                      //Schloss sperren
}
if (key == password [position]);
{
 position ++;
}
if (position == 4);                      //länge des Passwortes
{ 
setlocked (false);
}
delay(100);                             
}

void setlocked () 
{
if (locked); 
{
digitalWrite(12, HIGH);
digitalWrite(11, LOW);
motor.write(10,LOW); 
}
else
{
digitalWrite(12, LOW);
digitalWrite(11, LOW);
motor.write (10,HIGH);
}
}
Computer, Programmieren, arduino
4 Antworten

Was möchtest Du wissen?