Steckdose mit Relais schalten?

Also ich habe an eine steckdose ein Relais angeschlossen es schaltet auch un es geht an und aus, aber nachdem es ca 5 - 10 mal geschatet hat geht nur noch die lampe an und aus aber schaltet nicht mehr. wenn ich es ausbau und messe schaltet es aber wieder und es macht wieder KLICK. weiß jmd. woran das liegt?

Danke für eure Hilfe.

Falls es Hilft mein Code für ein RFID Chip:

#include <SPI.h>

#include <MFRC522.h>

#define SS_PIN 10

#define RST_PIN 9

MFRC522 mfrc522(SS_PIN, RST_PIN);

int Relaisstatus = 0;

void setup()

{

Serial.begin(9600);

SPI.begin();

mfrc522.PCD_Init();

pinMode (6, OUTPUT); // Der Pin 6 ist jetzt ein Ausgang (Hier wird ein RELAIS angeschlossen)

}

void loop()

{

if ( ! mfrc522.PICC_IsNewCardPresent())

{

return;

}

if ( ! mfrc522.PICC_ReadCardSerial())

{

return;

}

long code=0;

for (byte i = 0; i < mfrc522.uid.size; i++)

{

code=((code+mfrc522.uid.uidByte[i])10);

}

Serial.print("Die Kartennummer lautet:");

Serial.println(code);

// Ab hier erfolgt die erweiterung des Programms.

if (code==1493760 or 2304530) // Wenn der Zahlencode XXXXXXX lautet...

// Programmabschniss öffnen

{

if (Relaisstatus == 0) // ...Wenn Relaisstatus == 0...

{

digitalWrite (6, HIGH); // ...dann soll das RELAIS an Pin 6 AN Schalten...

Relaisstatus = 1; // ...und Relaisstatus = 1...

delay(1000); // ...Warte 1 Sekunde...

}

else // ...sonst

{

digitalWrite (6, LOW); // ...dann soll das RELAIS an Pin 6 AN Schalten...

Relaisstatus = 0; // ...und Relaisstatus = 0

delay(1000); // ...Warte 1 Sekunde

}

} // Programmabschnitt schließen

} // Sketch abschließen






Computer, Technik, Elektronik, programmieren, C Programmierung, Technologie, Relais, Relaisschaltung, Arduino Uno, Spiele und Gaming
2 Antworten
Arduino If Else?

Kann mir jmd. helfen, Ich habe folgendes Programm unten und Das Programm soll ein Relais schalten wenn der richtige RFID Chip vorgehalten wird ich möchte aber das es immer umschalten doch wie es jetzt ist sagt er immer : 'else' without a previous if.

Danke im voraus

Code:

#include <SPI.h>

#include <MFRC522.h>

#define SS_PIN 10

#define RST_PIN 9

MFRC522 mfrc522(SS_PIN, RST_PIN);

int Relaisstatus = 0;

void setup()

{

Serial.begin(9600);

SPI.begin();

mfrc522.PCD_Init();

pinMode (6, OUTPUT); // Der Pin 6 ist jetzt ein Ausgang (Hier wird ein RELAIS angeschlossen)

}

void loop()

{

if ( ! mfrc522.PICC_IsNewCardPresent())

{

return;

}

if ( ! mfrc522.PICC_ReadCardSerial())

{

return;

}

long code=0;

for (byte i = 0; i < mfrc522.uid.size; i++)

{

code=((code+mfrc522.uid.uidByte[i])10);

}

Serial.print("Die Kartennummer lautet:");

Serial.println(code);

// Ab hier erfolgt die erweiterung des Programms.

if (code==1458440 or 2162130) // Wenn der Zahlencode XXXXXXX lautet...

// Programmabschniss öffnen

{

if (Relaisstatus == 0) // ...Wenn Relaisstatus == 0...

digitalWrite (6, HIGH); // ...dann soll das RELAIS an Pin 6 AN Schalten...

Relaisstatus = 1; // ...und Relaisstatus = 1...

delay(1000); // ...Warte 1 Sekunde...

}{

else; // ...sonst

digitalWrite (6, LOW); // ...dann soll das RELAIS an Pin 6 AN Schalten...

Relaisstatus = 0; // ...und Relaisstatus = 0

delay(1000); // ...Warte 1 Sekunde

} // Programmabschnitt schließen

} // Sketch abschließen






Computer, Technik, Programmierung, C Programmierung, Technologie, Relais, Arduino Uno, Spiele und Gaming
1 Antwort
Arduino FFT Frequentzen?

Hallo,

Ich will wissen warum das FETT und Unterstrichene da so steht und warum es genau den Bereich den Ich haben will abschneidet:

#include "fix_fft.h"

#include <SPI.h>

#include <Wire.h>

#include <Adafruit_GFX.h>

#include <Adafruit_SSD1306.h>

#define OLED_RESET 4

Adafruit_SSD1306 display(OLED_RESET);

#define LEDr 11

#define LEDg 10

#define LEDb 9

char im[128], data[128];

char x = 0, ylim = 60;

int i = 0, val;

bool ColorChange = false;

int sensorValueR = 0;

int sensorValueG = 0;

int sensorValueB = 0;

int outputValueR = 0;

int outputValueG = 0;

int outputValueB = 0;

int OldSensorR = 0;

int OldSensorG = 0;

int OldSensorB = 0;

int previousMillis = 0;

int interval = 10000;

void setup()

{

 Serial.begin(9600);

 display.begin(SSD1306_SWITCHCAPVCC); 

 display.setTextSize(1);

 display.setTextColor(WHITE);

 display.clearDisplay();

 analogReference(DEFAULT); // Use default (5v) aref voltage.

 pinMode(A0, INPUT);

 pinMode(11, OUTPUT);

 pinMode(A1, INPUT);

 pinMode(10, OUTPUT);

 pinMode(A2, INPUT);

 pinMode(9, OUTPUT);

 Serial.begin(9600);

};

void loop()

{

 int min=1024, max=0;

 for (i = 0; i < 128; i++) {

  val = analogRead(A0);

  //data[i] = val / 4 - 128;

  data[i] = (val-128)/8;

  im[i] = 0;

  if(val>max) max=val;

  if(val<min) min=val;

 };

   

 fix_fft(data, im, 7, 0);

  

 display.clearDisplay();

 for (i = 1; i < 64; i++) { // In the current design, 60Hz and noise

  int dat = sqrt(data[i] * data[i] + im[i] * im[i]);

  display.drawLine(i2 + x, ylim, i2 + x, ylim - dat, WHITE); // skip displaying the 0-500hz band completely.

 }; // rather than 1.

 display.drawLine(0, 10, data[0], 10, WHITE);

 display.drawLine(0, 11, data[0], 11, WHITE);

 display.setCursor(0,0);

 display.print("min=");

 display.print(min,1);

 display.setCursor(76,0);

 display.print("max=");

 display.print(max);

 display.setCursor(155.5,0);

 display.print("v=");

 display.print((int)data[0]);

 display.display();

 sensorValueR = analogRead(A0);

 sensorValueG = analogRead(A1);

 sensorValueB = analogRead(A2);

 OldSensorR = analogRead(A0);

 OldSensorG = analogRead(A1);

 OldSensorB = analogRead(A2);

  

 outputValueR = map(sensorValueR, 0, 1023, 0, 255);

 outputValueG = map(sensorValueG, 0, 1023, 0, 255);

 outputValueB = map(sensorValueB, 0, 1023, 0, 255);

 analogWrite(LEDr, outputValueR);

 analogWrite(LEDg, outputValueG);

 analogWrite(LEDb, outputValueB);

};

Ich will den 60-was noch raufpasst Hz Frequentzbereich haben. Ausserdem sollten die ausschlagpegel etwas höher werden.

Dann muss ich noch die variable finden welche mir sagt wie hoch die bassfrequentzen sind.

Kann mir da jemand helfen bitte danke

Im anhang ist meine Schaltung welches das Audiosignal (Handy) verstärkt





Computer, programmieren, arduino, C Programmierung, Frequenz, C-Programmieren, fft, Arduino Uno, Spectrum Analyzer
1 Antwort
DayZ Standalone 0.63 - C/C++ Funktionen bekannt?

Guten Morgen allerseits. Ich habe mir gestern einen kleinen DayZ Testserver auf Nitrado eingerichtet und angefangen etwas herumzuspielen.

Nun würde ich gerne das Spawn-Script soweit anpassen, dass gewisse Spieler andere Start-Items bekommen, als der Rest. Das Skript liegt in Form einer C-Datei auf dem Server und wird scheinbar erst beim Server-Start eingebunden und übersetzt. Die Funktion, welche das Inventar eines Spielers beim Spawn mit Standard-Items befüllt ist folgende:

override void StartingEquipSetup(PlayerBase player, bool clothesChosen)
{
  	EntityAI itemEnt;
  	ItemBase itemBs;
		
  	itemEnt = player.GetInventory().CreateInInventory("SodaCan_Cola");
  	itemBs = ItemBase.Cast(itemEnt);
  	SetRandomHealth(itemEnt);
    
  	itemEnt = player.GetInventory().CreateInInventory("SodaCan_Cola");
  	itemBs = ItemBase.Cast(itemEnt);
  	SetRandomHealth(itemEnt);
    
  	itemEnt = player.GetInventory().CreateInInventory("SodaCan_Cola");
  	itemBs = ItemBase.Cast(itemEnt);
  	SetRandomHealth(itemEnt);
            
  	itemEnt = player.GetInventory().CreateInInventory("HuntingKnife");
  	itemBs = ItemBase.Cast(itemEnt);
  	SetRandomHealth(itemEnt);

  	if(player.GetIdentity().GetUID() == "Hier die SteamID eines Spielers")
  	{
    	  itemEnt = player.GetInventory().CreateInInventory("Marmelade");
     	 itemBs = ItemBase.Cast(itemEnt);
    	  SetRandomHealth(itemEnt);
  	}
}

Der Spieler spawnt mit 3 Cola-Dosen und einem Hunting-Knife. Ein gewisser Spieler soll allerdings zusätzlich ein Glas Marmelade beim Spawn erhalten.

Die Funktionen ...

player.GetIdentity().GetUID()

... sind leider nicht korrekt.

Weiß zufällig einer von euch wie ich mein Vorhaben umsetzen kann? Kennt jemand eine Funktion, die aus dem player Objekt etwas brauchbares zurückliefert?

Server, Computer, programmieren, C Programmierung, spawn, DayZ, Bohemia Interactive, dayz standalone
1 Antwort
C-Programm - Integer wird ohne benutzt zu werden verändert?

Der Integer wird als 1 festgelegt. Dies wird nie geändert. Am Schluss ist er jedoch 36. Woran liegt das?

Mein Code hier:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define SIZE 2049
#define UP_ 1
#define DOWN_ 3
#define LEFT_ 4
#define RIGHT_ 2

int counter = 0;
int gamespeed = 4000;



int main()
{
    int snakelen = 1;
    int snakedir = RIGHT_;
    int snakeheadxpos = 5;
    int snakeheadypos = 5;

    char gametable[SIZE];
    char q;
    memset(gametable, ' ', SIZE-1);
    gametable[SIZE] = "/0";

    while(q != 27)
    {
        counter++;
        if(kbhit())
        {
            q = getch();
            switch(q)
            {
            case 'w':
                if(snakedir != DOWN_)
                    snakedir = UP_;
                break;
            case 'a':
                if(snakedir != RIGHT_)
                    snakedir = LEFT_;
                break;
            case 's':
                if(snakedir != UP_)
                    snakedir = DOWN_;
                break;
            case 'd':
                if(snakedir != LEFT_)
                    snakedir = RIGHT_;
                break;
            }

        }
        if(counter%gamespeed == 0)
        {
            switch(snakedir)
            {

            case UP_:
                if(snakeheadypos==0){
                    goto exit_loop;
                }
                snakeheadypos--;
                break;

            case DOWN_:
                if(snakeheadypos==32){
                    goto exit_loop;
                }
                snakeheadypos++;
                break;

            case RIGHT_:
                if(snakeheadxpos==31){
                    goto exit_loop;
                }
                snakeheadxpos++;
                break;

            case LEFT_:
                if(snakeheadxpos==0){
                    goto exit_loop;
                }
                snakeheadxpos--;
                break;
            }
            gametable[(snakeheadypos*64 + 2*snakeheadxpos)] = 'x';
            printf("%s", gametable);
        }
    }
exit_loop: ;
    printf("Game Over - Score: %d", snakelen);

}

(Reupload der Frage wegen Fehlern bei der letzten (man kann ja nichts mehr ausbessern -.-))

PC, Computer, Programm, programmieren, Programmierung, C Programmierung, Code, Informatik, Integer
3 Antworten
Wo ist der Fehler (C Programm)?

Hallo, entschuldigt, wenn die Frage für die meisten hier wahrscheinlich ganz einfach ist.

Ich habe in meiner Schule als Hausaufgabe bekommen, einen Code zu schreiben, bei dem der Benutzer einen Zahlenpyramide erstellen soll, aber mein Code funktioniert nicht und ich kann leider nicht debuggen, weil ich das noch nicht eigestellt bekommen habe.

Könntet ihr mir sagen, wo der Fehler ist, verzweifle hier gerade.

/

 * Sternenpyramide.c

 

  Created on: 06.11.2018

      Author: Diamond

 /

#include <stdio.h>

int main() {

     int Reihen = 0;

     int Zeilen = 0;

     int Speicher1 = 0;

     int Speicher2 = 0;

     printf("Gib die Hoehe des Baumes ein: ");

     scanf("%d", &Reihen);

     Zeilen = Reihen;

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

           if (i < Reihen) {

                 Speicher2 = 0;

                 while (Speicher2 < Zeilen) {

                       printf(" ");

                       Speicher2++;

                 }

                 Zeilen--;

           }

           printf("");

           if (i > 0) {

                 Speicher1 = i;

                 while (Speicher1 > 0) {

                       printf("");

                       Speicher1--;

                 }

           }

           printf("\n");

     }

}





Computer, Schule, Fehler, C Programmierung
2 Antworten
Wie funktioniert die UDP recvfrom()-Funktion ( C++)?

Hallo Leute,

Ich habe ein kleines Spiel auf C++ programmiert und bin gerade dabei es Netzwerkfähig zu machen.

Der Server hat einen UDP-Socket und sobald recvfrom() etwas empfängt überprüft er ob bereits ein Spieler-Objekt die IP-Adresse und den Port besitzt.Wenn nicht fügt er einen neuen Spieler hinzu. Jetzt frage ich mich was passiert, wenn mehrere Objekte gleichzeitig etwas an den Server-Socket senden. Da sie ja alle an das gleiche Socket senden kann es doch sein, dass ab und zu in einem Server-durchlauf mehrere Clienten etwas gesendet haben. Werden die verschiedenen Pakete auf einmal bearbeitet, werden sie in eine Warteschlange gesetzt oder gehen sie verloren?

Wäre es dann nicht sinnvoll für jeden Clienten der sich ins Spiel anmeldet einen eigenen Socket zu erstellen?

Ich lasse den Server-Update über einen eigenen Thread laufen, damit die Berechnungen nicht in die Abfrage-Geschwindigkeit mit einfließen.
Damit ich empfangene Nachrichten nicht gleich überschreibe, ohne dass sie abgearbeitet wurden, überlege ich mir entweder, die empfangene Nachricht schon im Update-Thread zu Deserialisieren und zu bearbeiten, oder die Empfangene Nachricht in einen String-Vektor hinzuzufügen, und diese parralel zu deserialisieren und zu bearbeiten.

Im ersten Fall befürchte ich, dass die Server-Update-Rate zu langsam wird und ich zu viele empfangene Nachrichten verliere und ich zweiten fall befürchte ich, dass mehr Nachrichten reinkommen, als der Server abarbeiten kann und die Vektoren immer Länger werden und somit vielleicht Nachrichten abgearbeitet werden die schon nicht mehr aktuell sind.

Da ich mir das alles selbst beibringe, kann es gut sein, dass ich die Recvfrom() und Sendto() Funktionen nicht richtig verstanden habe. Sollte ich mit meinem Verständnis daneben liegen, wäre ich über eine kurze Korrektur sehr Dankbar.

Mit besten Grüßen

Dojo

Computer, Technik, Netzwerk, programmieren, C-plus-plus, C Programmierung, Technologie, UDP TCP
1 Antwort
C# / MySQL Connection per ODBC?

Ich brauche Hilfe. Immer wenn ich versuche, auf den Knopf zu drücken, kommt eine Fehlermeldung. ( Hier die Fehlermeldung: http://prntscr.com/i6t5za ) Ich programmiere das alles in C# (Microsoft Visual Studio 2015) und möchte eine Android App programmieren. Für die Experten unter euch, ist hier der Quelltext, wo ihr vielleicht ein paar Fehler finden könnt:

using Android.App;
using Android.Widget;
using Android.OS;
using Microsoft.Data.Odbc;
using System.Data;
using System;

namespace VocabWin_Beta
{
   [Activity(Label = "VocabWin_Beta", MainLauncher = true)]
   public class MainActivity : Activity
   {

       protected override void OnCreate(Bundle savedInstanceState)
       {
           base.OnCreate(savedInstanceState);

           // Set our view from the "main" layout resource
           SetContentView(Resource.Layout.Main);

           var btnDisplay = FindViewById<Button>(Resource.Id.btnDisplay);
           btnDisplay.Click += BtnDisplay_Click;
       }

       private void BtnDisplay_Click(object sender, EventArgs e)
       {
           OdbcConnection cn;
           OdbcCommand cmd;
           string MyString;

           MyString = "Select * from Customers";

           cn = new OdbcConnection("Driver={SQL Server};Server=localhost;UID=root;PWD=;Database=vocab_win;");
           cmd = new OdbcCommand(MyString, cn);
           cn.Open();

           AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);
           alertDialog.SetTitle("Successfull connected to the Database!");
           alertDialog.SetMessage("Connection is open!");
           alertDialog.SetNeutralButton("OK", delegate
           {
               alertDialog.Dispose();
           });

           alertDialog.Show();
           cn.Close();
       }
   }
}
Ihr habt eine Lösung und habt sie geschrieben? Dann wähle dies! 0%
Habt ihr eine Lösung? 0%
Habt ihr auch das Problem? 0%
Programmierung, C Programmierung, MySQL, microsoft visual studio, schnelle-antwort-bitte, MySQL Server
1 Antwort
C - char Array auf Buchstaben überprüfen?

Hallo alle zusammen.

Ich habe ein paar Funktionen in C geschrieben, welche Text ver- und entschlüßeln können. Jetzt jedoch soll zum Bespiel der Text "Hallo Welt" eingeben werden und dann ein Schlüßel eingegeben werden. Wenn man jetzt "z 3 v Asterix #" eingibt, so soll der Text erstmal mithilfe des Caesar-Chiffres um 3 Stellen verschlüßelt werden und dann im Anschluß der Text noch mit dem Vigenere-Chiffre über das Schlüßelwort "Asterix" verschlüßelt werden.

Nur wie setze ich das dann im C-code um? Müssen dazu in Schlüßelarray Kombi das v oder z gelöscht werden? Und wie greife nur auf den Schlüßel zu (Bsp: "v Asterix" ->ich brauche bloß das Schlüßelwort Asterix?

Ist das so überhaupt umsetzbar?

Zurzeit wird im Array nicht gescant ob ein v oder z drin ist...


void KombiVerschlüsseln()
{
    unsigned char txt[100], verschiebung;
    char key[2], fml[10];
    int z, i;
    printf("Geben Sie einen Text ein, der mit einer Kombi verschluesselt werden soll:\n");
    getchar();
    fgets(txt, 100, stdin);
    _strlwr(txt);
    printf("Geben Sie eine Kombination von Verschiebungsschluesseln ein und schliessen Sie es mit einem '#' ab.\n");
    char kombi[100];

    printf("Nutzen Sie vor dem jeweiligen Schluessel einen dieser Befehle:\n"         "z : Entschluesseln nach Methode I\n"         "v : Entschluesseln nach Methode II\n");     scanf("%[^#]%*c", kombi);

    //while (kombi == '#')     
int m= strlen(txt);     
for (int i = 0; i < kombi[i]; i++) {     
if (kombi[i] == "z") {         
//hier wäre das Caesar Chiffre     
}     else if (kombi[i] == "v") {         
int i = 0, j = 0;         
char c;         
int n = strlen(txt);//Länge von der Nachricht und Key ermitteln         
int m = strlen(fml);         
printf("Verschluesselter Text:\n");         
if (m <= 11) { //Es wird geprüft, ob der eingegebene Schlüssel länger als 10 Zeichen ist             
for (i = 0; i < n; i++)  
     {                 
if (islower(txt[i]))//da wir unsere Nachricht in Kleinbuchstaben umwandlen braucht man nur zu prüfen ob Kleinbuchstaben enthalten sind     
            {                     if (isupper(fml[j]))//Wenn sich große Buchstaben im Key befinden diese  Konvertierung durchführen                     {                         c = (((txt[i] - 'a' + kombi[j] - 'A') % 26) + 'a');//Konv. mittels Modulo                     }                     else if (islower(fml[j]))//Wenn sich kleine Buchstaben im Key befinden diese  Konvertierung durchführen
            {                         
c = (((txt[i] - 'a' + kombi[j] - 'a') % 26) + 'a');                     
}                     
printf("%c lue", c);                     
j++;                 }

            }

         }     
}else {         
printf("Kein v oder z gefunden!\n");     
}

}

Computer, Array, C Programmierung
1 Antwort

Meistgelesene Fragen zum Thema C Programmierung

C - an bestimmte Stelle im Programm zurückspringen

3 Antworten

Welchen Nutzen hat "return 0;" bei der C-Programmierung?

6 Antworten

Verzögerung in C

3 Antworten

Programmieren mit C: Mittelwert berechnen?

2 Antworten

C-Programm in Python einbinden?

2 Antworten

Ist Visual Studio abwärtskompatibel?

3 Antworten

C-Programmierung -> Zahlen verdoppeln mit while

6 Antworten

Zahlenraten mit C programmieren

3 Antworten

C-Programmierung: Wieso %2i und nicht %i und wieso %2.lf statt %lf (%.2lf ist nicht gemeint)

3 Antworten

C Programmierung - Neue und gute Antworten