Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - juliol34

#1
Hola! antes de nada gracias por intentar ayudar. Espero no equivocarme de lugar, ya que como se trata de un problema en el código de arduino no estoy muy seguro de que sea aquí, aunque el arduino es electrónica jeje

Bueno, aquí va mi problema. En mi arduino tengo tres leds y tres interruptores. Mi problema comienza cuando llamo a la función LedOn (funcion miembro del objeto Button), ya que no se porque no lee lo guardado en LedPin (dato miembro del objeto Button).

Aquí les dejo el código, si se necesita alguna aclaración de alguna función (para que la quiero) pídanla. Espero que me puedan ayudar! gracias!


class Button
{
  private:
  int ButtonPin;
  int LedPin;
  public:
  Button (void){}
  ~Button (void){}
  void ButtonAsing (int ledpin, int buttonpin);
  void AddButtonPin (int pin){LedPin = pin;}
  void AddLedPin (int pin){ButtonPin = pin;}
  void Reproduction (void);
  void LedOn(void);
};
void Button::ButtonAsing (int ledpin, int buttonpin)
{
  AddButtonPin (buttonpin);
  AddLedPin (ledpin);
}
void Button::Reproduction(void)
{
  LedOn();
}
void Button::LedOn(void)
{
  digitalWrite (LedPin, HIGH);
  delay(2000);
  digitalWrite (LedPin,LOW);
}


void setup()
{
  pinMode (4,INPUT);
  pinMode (2,OUTPUT);
    pinMode (12,INPUT);
  pinMode (6,OUTPUT);
    pinMode (10,INPUT);
  pinMode (5,OUTPUT);
}

void loop ()
{
  Button rojo ;
  Button verde ;
  Button amarillo ;

  rojo.ButtonAsing (2,4);
  verde.ButtonAsing (6,12);
  amarillo.ButtonAsing (5,10);

  rojo.LedOn();
  verde.LedOn();
  amarillo.LedOn();
  delay (8000);
}

#2
Electrónica / Calculadora Arduino
26 Julio 2010, 21:52 PM
Hola! este es mi primer post de algo serio, y quiero compartirlo con vosotros. Me he animado a empezar a aprender electrónica con arduino y esto es lo que he conseguido hasta ahora. es una calculadora muy simple, tan simple que solo suma y resta jeje pero para empezar no esta mal no? Me gustaría que postrarais lo que veáis mejorable en cuanto a código.

En el arduino tengo montados únicamente una pantalla LCD de 16 pines y tres botones. La pantalla esta puesta tal y como aparece en la web official de arduino. y los botones en los pins 9,8,10.


#include <LiquidCrystal.h>
int buttonPin1 = 8;
int buttonPin2 = 9;
int buttonPin3 = 10;

int num1;
int num2;

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void valor (int * num);
int f_operacion (void);// 1 = "+"   0 = "-"


int f_operacion (void)
{
  int temp;
  temp = 1;
  delay(50);//para que no parpadee
  lcd.clear();
  lcd.setCursor (0,0);
  lcd.print ("escoja operacion:");
  lcd.setCursor(0,1);
  lcd.print("+");
  while (digitalRead(buttonPin3) == LOW)
  {
    if (digitalRead(buttonPin2)==HIGH)
    {
      lcd.clear();
      lcd.setCursor(0,1);
      delay(20);
     
      lcd.print("+");
      delay (200);
      temp = 1;
    }
    if (digitalRead(buttonPin1)==HIGH)
    {
      lcd.clear();
      lcd.setCursor(0,1);
      delay(20);
      lcd.print  ("-");
      delay(200);
      temp = 0;
    }
  }
  return (temp);
}

void setup() {
  lcd.begin(16, 2);
  lcd.print("Calculadora 1.0");
  delay(500);
  pinMode (buttonPin1,INPUT);
  pinMode (buttonPin2,INPUT);
  pinMode (buttonPin3,INPUT);
}


void valor (int *num)
{
  *num = 0;
  while (digitalRead(buttonPin3) == LOW)
  {
    delay(50);//para que no parpadee
    lcd.clear();
    lcd.setCursor (0,0);
    lcd.print ("inserte numero:");
    lcd.setCursor(0,1);
    lcd.print(*num,DEC);
    if (digitalRead(buttonPin2)==HIGH)
    {
      (*num)++;
      delay(200);//para que nos de tiempo de sumar solo uno
    }
        if (digitalRead(buttonPin1)==HIGH)
    {
      (*num)--;
      delay(200);
    }
  }

}

void loop() {
  int opt;
  valor (&num1);
  delay (200);//para que nos de tiempo de quitar el dedo
  opt = f_operacion ();
  delay (200);//para que nos de tiempo de quitar el dedo
  valor (&num2);
  delay(200);
  lcd.clear();
  while (digitalRead(buttonPin3)==LOW)
  {
    if (opt == 1)
    {
      lcd.setCursor(0,1);
      lcd.print(num1+num2);
    }
        if (opt == 0)
    {
      lcd.setCursor(0,1);
      lcd.print(num1-num2);
    }
  }
  delay(200);
}