全264件 (264件中 1-50件目)

AIツール特徴メリット使用例Claude最大20万トークンのデータ処理能力- 高度な会話能力 - 効率的なデータ処理 - プログラムのプレビュー 企業のカスタマーサポートで24時間対応のチャットボットとして利用Perplexity検索機能を持つ生成AI- 即時情報取得 - 信頼性の向上- ファクトチェック学生がレポートを書く際に信頼性のある情報を検索し、ファクトチェックで内容を確認Mapifyマインドマップ生成AI- 視覚的整理 - 学習効率向上 - 多様なデータ入力プロジェクトのアイデア出しや複雑なテーマの勉強時に関連情報を整理NotebookLM資料分析AIPDFや、webなどを入れ、その情報の中から出力が出来る- データ統合 - 効率的な理解 - 質疑応答研究者や学生が複数の学術論文を分析し重要なポイントを抽出Gammaプレゼン資料の自動生成- 迅速な資料作成 - 多用途 - 簡単な共有ビジネスプレゼンテーションの準備に短時間で視覚的に優れた資料を作成Napkin.ai図の自動生成- 視覚化 - 多様なスタイル - 簡単な操作ビジネス会議で重要なポイントを視覚化するための図を迅速に作成Adobe Firefly安全な画像生成- 商用利用可能 - 編集機能 - スピード広告キャンペーンのビジュアル素材を短期間で作成Suno音楽生成AI- オリジナル楽曲 -イベント活用 - ジャンル選択イベントで使用するテーマソングを作成簡単に自分のイメージした音楽作成DifyノーコードAIアプリ開発- 簡単なアプリ作成 - 業務効率化 - 多様な用途独自データを活用して業務支援ツールを作成
2025.01.11
コメント(0)
2025年注目の開発トレンド: ローカルファースト、Webアセンブリー、リアクトネイティブソフトウェア開発は進化を続けており、AIに加えて注目すべき新たな技術トレンドが登場しています。この記事では、2025年に注目すべき3つの技術「ローカルファーストなアプリケーション」「Webアセンブリー(WebAssembly)」「リアクトネイティブ」を解説し、それぞれの技術が開発者にとってどのように有益かを説明します。ローカルファーストなアプリケーションローカルファーストとは?「ローカルファースト」とは、ユーザーのデバイス(スマートフォンやPC)を中心にアプリケーションを設計する方法です。このアプローチの最大の特徴は、オフラインでも動作することです。つまり、インターネット接続がなくても、アプリケーションは問題なく機能し、ユーザーに快適な操作性を提供します。ローカルファーストアプリのメリットオフラインサポート: インターネット接続がなくても使用可能。即時反応: ネットワークに依存せず、ユーザーの操作に即座に反応。データのローカル管理: データはデバイスに保存され、ネットワークへの依存が少ない。例えば、FigmaやNotionなどのツールは、ローカルファーストの考え方に基づいており、ネットワーク接続がなくても利用できます。技術的背景と進化ローカルファーストのアプローチは、2010年代後半から注目されるようになり、技術的な進化を遂げました。特に、CRDT(競合のない複製データ型)やyjsといった技術が重要な役割を果たしています。これらの技術により、ローカルでデータの変更を安全に行い、ネットワーク接続が回復した際にクラウドと同期できます。Webアセンブリー(WebAssembly)Webアセンブリーの概要Webアセンブリー(WebAssembly)は、ブラウザ上で直接実行できるバイナリー形式のプログラムです。従来、JavaScriptのみで開発していたWebアプリケーションにおいて、JavaScript以外のプログラミング言語(例えば、RustやGo)で開発が可能になりました。この技術により、開発者の選択肢が広がり、より効率的なアプリケーション開発が可能となります。Webアセンブリーのメリット高パフォーマンス: 計算量が多い処理を効率的に実行できます。これにより、ブラウザ上でも軽快な動作が可能になります。言語の多様性: JavaScript以外の言語(Rust、Go、C++など)で開発し、Webアセンブリーにコンパイルできます。データ処理の高速化: 例えば、SQLiteをWebアセンブリー化することで、ブラウザ上で高速なデータベース操作が可能になります。将来性と展望Webアセンブリーは、ブラウザだけでなく、サーバーや他のデバイスでも実行できるようになりつつあります。これにより、一度開発したコードを複数のプラットフォームで運用できる利点があり、Web開発における重要な技術として今後ますます注目されるでしょう。リアクトネイティブリアクトネイティブとは?リアクトネイティブは、クロスプラットフォームでアプリケーションを開発できるフレームワークです。これを使用すると、iOS、Android、Web、デスクトップ、VR/ARなど、複数のプラットフォームで動作するアプリケーションを効率的に開発できます。リアクトネイティブの進化最新のバージョン(0.76)では、大規模なアーキテクチャ変更が行われ、JSスレッドとUIスレッドが直接通信できるようになりました。この変更により、ネイティブアプリケーションに近いパフォーマンスを提供し、ブリッジの排除によって、より高速に動作するようになりました。エキスポと新機能エキスポは、リアクトネイティブのフレームワークで、急速に進化しています。新しい機能として、**リアクトサーバーコンポーネント(RSC)**への対応が進んでおり、開発者体験が向上しています。また、ユスドム機能により、Webビューの開発が簡単になり、リアクトコードをそのまま利用できるようになっています。まとめローカルファーストのアプリケーション、Webアセンブリー、リアクトネイティブの3つは、2025年のソフトウェア開発において重要な役割を果たす技術です。それぞれの技術は異なる利点を持ち、開発者にとって有益なスキルとなるでしょう。今後、これらの技術がどのように進化していくのかに注目し、実際のプロジェクトで取り入れていくことが求められます。
2025.01.04
コメント(0)
投資用語まとめ用語英語表記意味・説明買いの目安PBRPrice-to-Book Ratio株価純資産倍率。株価を1株あたり純資産で割ったもので、企業の資産価値に対する株価の割安度を示す指標。PBRが1.0以下であれば、株価が純資産価値を下回っており割安とされる。PERPrice-to-Earnings Ratio株価収益率。株価を1株あたり純利益で割ったもので、企業の利益に対する株価の割安度を示す指標。PERが15以下であれば、業界平均や市場平均に比べて割安とされる。ROEReturn on Equity自己資本利益率。株主が出資した資金に対してどれだけ利益を生み出しているかを示す指標。ROEが10%以上であれば収益性が高い企業と判断される。配当利回りDividend Yield株価に対する年間配当金の割合。株主が投資に対して得られる収益性を測る指標。配当利回りが3%以上であれば高配当銘柄として魅力的とされる。流動比率Current Ratio流動資産を流動負債で割ったもの。短期的な支払い能力を示す指標。流動比率が200%以上であれば、財務の安全性が高いとされる。自己資本比率Equity-to-Asset Ratio総資本に占める自己資本の割合。企業の安全性を測る指標。自己資本比率が50%以上であれば、財務基盤が安定しているとされる。ボラティリティVolatility株価や市場全体の価格変動の幅を示す指標。リスクや不確実性を表す。ボラティリティが低い場合、安定した投資先とされるが、高い場合は短期的チャンス。
2024.12.22
コメント(0)

GPT-4 Omni Miniの概要GPT-4 Omni Miniは、OpenAIが開発した最新の言語モデルで、以下のような特徴を持っています:優れたコストパフォーマンス: 従来のモデルと比べて10%以上の高速化を実現し、最大出力トークン数が17,600にまで増加しました。大幅なコスト削減: 従来のGPT-4モデルと比較して、コストが驚異の60%以上も削減されています。バランスの取れた性能: 安くて性能が良いという、まさにコストパフォーマンスに優れたモデルとなっています。コストパフォーマンスの詳細GPT-4 Omni Miniのコストパフォーマンスは、本当に驚異的です:入力100万トークンあたり15セント、出力100万トークンあたり60セントという非常に低コストな料金設定他の言語モデルと比較しても、優れたコストパフォーマンスを発揮これにより、企業や個人での活用がより身近になり、オープンソースモデルとの競争力も高まることが期待されます。機能拡張と性能向上GPT-4 Omni Miniは、単にコストを削減しただけではありません。以下のような機能拡張と性能向上も実現しています:画像入力に対応: マルチモーダル機能により、テキストだけでなく画像も処理可能に最大出力トークン数の増加: 17,600トークンまで出力可能となり、より長文の生成や複雑なタスクへの対応力が向上安全性の向上 インストラクションとエラー率による安全性が向上し、より信頼性の高い出力が可能に他モデルとの比較GPT-4 Omni Miniは、他のモデルと比較しても優れた性能を発揮します:GPT-3.5 Turboと比較して、速度と精度が向上チャットボットアリーナのリーダーボードでは、GPT-4 Turboよりも高評価各種ベンチマークテストでも、他社モデルと比べて高い性能を発揮まとめGPT-4 Omni Miniは、高性能と低コストを両立させた革新的な言語モデルです。オープンソースモデルとの競争が激しくなる中、GPT-4 Omni Miniは新たな選択肢として注目を集めています。今後のAI開発や応用に、どのような影響を与えていくのか、非常に楽しみですね。
2024.08.03
コメント(0)

ロジカルシンキングを効果的に行うためには、「スキーマ」という概念を理解し活用することが非常に重要です。このブログでは、スキーマの概念、その重要性、そして潜在的な弊害について深掘りしていきます。1. スキーマとは何か?スキーマとは、私たちの頭の中にある知識や経験の思考の枠組みのことを指します。具体的には:知識や経験の「枠組み」として捉えることができます過去の経験から得た知識が構造化されたものです。2. なぜスキーマを理解することが重要なのか?人は何かを考える時に、このスキーマに当てはめて考える傾向があります。例えば:ガラスを割った時の反応は人それぞれ異なります:ケガの心配をする人コップの価値を確認する人割ってしまった理由を気にする人このように、一人一人の反応が異なるのは、各個人が持つスキーマが異なるためです。つまり、情報と認識の間に強いコンテクスト(過去の経験)が介在しているのです。 その為、ロジカルシンキングを行う際に、これが弊害になってしまうのです。3. スキーマによる弊害スキーマには潜在的な弊害もあります: (1)スキーマに合うものだけを重視する傾向例:ガラスのコップを割ったという情報に対して、「けがをする」というスキーマが優先され、他の情報を軽視してしまう場合があります。 (2)スキーマに合わせて解釈してしまう元々合わないものを、無理やりスキーマに結び付けて理解しようとします。これにより、非論理的で荒唐無稽な解釈をしてしまう可能性があります。例:高いコップとケガを結び付け、「高いコップを割るとケガをしやすい」という誤った認識を信じ込んでしまう。このように、スキーマによって、情報を軽視してしまったり、間違った解釈をしてしまうことは、ロジカルシンキングの弊害となるのです。4. スキーマの重要性を認識するロジカルシンキングを学ぶ前に、自身のスキーマを知ることが重要です:スキーマを完全になくすことはできないため、その存在を認識することが大切です。スキーマの違いを認識し、自分の思考にブレーキをかけることができます。スキーマの違いを埋める努力が必要です。これにより、ロジカルシンキングの技術を正しく活用できるようになります。しかし、注意すべき点として:スキーマが固定化すると、思考や認識の偏り、歪みが生じてしまいます。これが、非論理的に物事を考えてしまう原因となります。5. 非論理的な思考のパターンスキーマに起因する非論理的な思考には以下のようなものがあります:ハイコンテクストをそのまま処理しようとする。スキーマで短絡的に決めつける。間違った答えに到達して、それを信じ込んでしまう。結論ロジカルシンキングにおいて、スキーマの理解と活用は非常に重要です。相手のスキーマを理解し、自分のスキーマを適切に伝えることで、より効果的なコミュニケーションと問題解決が可能になります。ただし、スキーマに固執しすぎないよう注意し、常に新しい視点を取り入れる柔軟性を持つことが大切です。これにより、より論理的で効果的な思考が可能になるでしょう。
2024.07.27
コメント(0)
こんにちは、ゆきです。先日友達と映画を見に行ってきました。見に行った映画は「アンパンマン」と「ルックバック」です。「ルックバック」は、『チェンソーマン』を描いた作者が手掛けた作品で、私は知らなかったんですけど、一時期とても話題になったそうです。それはとても面白くて、まさに青春という感じの映画でした。詳しいことは話せませんが、ざっくり言うと漫画家を目指す少女たちの物語です。青春を夢に費やすことは、なかなかできないことであり、私にはすでにできないけれど、そういう青春ってとてもいいなって感じました。もしもあれが昔だったとしても、多分同じことにはならなかったと思います。それも一種の才能なのかなと思いながら見ていました。あれは普通に見ていると泣ける話で、うるうるしました。お互いが努力し切磋琢磨することによって高め合い、漫画の連載までこぎつけた少女たち。しかし、それぞれの道は成長とともに別々の方向に向かっていきます。私たちもそれぞれの道を歩いていく、そんな青春の成長と出会いと別れの要素が集まった映画でした。もう一作の「アンパンマン」は、あるTwitterの投稿を見たことがきっかけで見に行くことになりました。さすがに自分一人では行けないので、どちらの映画も友達と一緒に行きました。めちゃくちゃ懐かしくて、久しぶりにアンパンマンを見たなって感じがしました。何に惹かれて見たかというと、異世界に飛ばされたバイキンマンがゼロから機械のロボットを作成していくという話です。これはまさにエンジニア的にはめちゃくちゃ面白いんじゃないか、そんな話を聞いて見に行ったわけです。実際、バイキンマンが異世界に飛ばされ、そこにある少しの鉄からバイキンマンが乗る装置を作っていくわけですが、その技術力が半端ない。確かにこれは技術者的には見ていて少し面白いなと思いました。やはり子供向けのアニメなので、展開的に少し退屈な部分もありましたが、これはこれでありなのかなと思いました。以上、昨日の映画鑑賞の感想でした!
2024.07.21
コメント(0)

こんにちは。今回は多くの人が抱いているロジカルシンキングに関する3つの誤解について解説していきます。1. 論理的思考は頭で行うものではない多くの人は論理的思考を純粋に頭の中だけで行うものだと考えがちです。しかし、実際はそうではありません。論理的思考には、紙に書いたり図を描いたりすることが重要です。実際に手を動かして考えることで、思考のプロセスが整理されていきます。頭の中だけでなく、書いたり描いたりすることで、思考を可視化し、より深い洞察を得ることができます。2. 論理的思考は問題解決の手法ではない論理的思考を単なる問題解決の手法と捉えるのは誤りです。私たちは問題解決以外の場面でも論理的思考を活用できます。学問や研究に取り組む際にも論理的思考は欠かせません。日常生活の中でも、新しい考えを生み出したり、複雑な状況を整理したりするのに役立ちます。3. 論理的思考は頭の良さとは必ずしも関係ない「論理的思考ができる人=頭が良い人」という図式は必ずしも正しくありません。論理的思考は訓練によって身につけることができるスキルです。実際に手を動かして練習し、繰り返し適用することで上達します。日常業務の中で意識的に論理的思考を実践することで、徐々に習慣化していきます。結論:ロジカルシンキングは、頭の中だけで行うものでも、単なる問題解決の手法でもありません。また、生まれつきの能力とも限りません。訓練と実践を重ねることで、誰でも身につけ、活用できるスキルなのです。ぜひ、これらの誤解を解いた上で、日々の生活や仕事の中でロジカルシンキングを意識的に取り入れてみてください。思考の質が向上し、新たな視点や解決策を見出すきっかけになるはずです。
2024.07.20
コメント(0)
![]()
今日は、久しぶりに仕事で問題が発生しました。既に量産移管した製品の出荷が決まっているもので、不具合が出てしまい対応することに。原因は分かったので、その不具合部分を修正すればいいのですが、一度こういうことが起こると急激に仕事が忙しくなります。こうなると私は、焦ってしまい、説明不足、対応不足などなど、普段出来ることが出来なくなり、やる余裕を失ってしまうのです。中々こういうのは治るものでもないのでどうしようもないですが、どうにかこうにか対応しました。設計開発なんてやるもんじゃないよなーと思いながら、無事に乗り切りました。責任ある仕事なんてしたくないですね・・・まだ、検査で引っかかって良かったですが。これが客先で発生した問題だと思うとストレスが・・・・根本的な解決をしたいのですが、すぐ対応することが難しく、人も少なければ、対応出来る時間も中々取れないのが、本当に辛い所です。こういう時は、家に帰って、好きなアニメや漫画に浸るに限りますが。そんな時間も少ないので、休みが恋しくて仕方がないです。最近アニメもやりましたが、最近読んでめっちゃ面白かった漫画です。勢いがめっちゃ凄く、「思考によって未来への扉をこじ開ける」みたいなサッカー漫画です。ブルーロック(1) (講談社コミックス) [ 金城 宗幸 ]価格:528円(税込、送料無料) (2024/7/17時点)楽天で購入
2024.07.18
コメント(0)
![]()
最近、AI関連の情報がとても多く、時代の速さを感じます。少し前にChat GPTが出たなーと思ったら、あっという間に、広がり、今ではGeminiや、Perplexity、Claude 3.5などの言葉でのやりとりできるAIから、No Langなどの動画作成AI、画像生成AIなど色々なAIが出てきました。なので、せっかくならAIを使って色々やろうかなと思いつつ、何をやるかがまとまらず、とりあえず色々使ってみつつまとめてます。・AIのある日常(Perplexity AIで検索効率化)・AIのある日常2(ノーラングでワンクリック簡単ショート動画作成)今後、VRもAIもどんどん技術が進んでいくと、もっと自分のアイディアが重要になっていきそうだなって思ってます。そんな中で、検索や情報収集にAIが使えるとなると、技術系のブログの需要はどうなるかなーと思いつつ、日本ではAIを実際使ってる人はまだまだ少ないみたいなので、大丈夫かな。最近、HAREの日常という美容系youtuberさんの影響で買った、練り香水です。実際めっちゃいい匂いで、買ってよかったです。【楽天2冠達成】 練り香水 香水 メンズ フレグランス ベルガモット モテ香水 オスモフェロン 大人 フェロモン モテ 男性 ムスク いい香り 加齢臭 体臭対策 プレゼント MAGINA SENSE WEAR BERGAMOT(センスウェア ベルガモット) 送料無料 マギナ価格:3,980円(税込、送料無料) (2024/7/15時点)楽天で購入
2024.07.16
コメント(0)

最近、SNSやWeb上で短い動画コンテンツが人気を集めています。そんな中、AIの力を借りてショート動画を簡単に作成できるサービス「NoLang」が注目を集めています。今回は、このサービスの特徴や使い方について詳しくご紹介します。1. ノーラングとは?ノーラングは、指示を入力するだけで自動的に動画を生成してくれるAIサービスです。従来のAIサービスと比べ、より使いやすい設定が可能になり、ユーザーにとって扱いやすくなったのが特徴です。no langサイト:https://no-lang.com/※googleアカウントがあれば、認証するだけで簡単すぐに使えます。2. 主な特徴 2.1 簡単な動画作成 ショート動画の解説動画やゲームの解説動画など、さまざまなジャンルのショート動画を短時間で作成できます。 2.2多彩な機能アバターの追加や、生成した解説のように対話式の動画を作成可能書きや背景音声、インタビューなど、様々なプロンプトを設定できる対話モードをONにしたり、プロンプトで対話の個性化も可能 2.3利用しやすい料金プラン無料プランでも基本的な機能を利用可能有料プランではアバター付き動画の生成や画像生成などの高度な機能が利用可能 2.4著作権に配慮日本人開発者が作ったサービスで、商用利用もコピーライトさえ明記すれば可能ただし、他人のコンテンツを無断で使うのは避けるべき3.ノーラングの使い方 3.1 アカウント作成 ノーラングのウェブサイトにアクセスし、アカウントを作成します。 3.2 プロンプト入力 動画のテーマや内容を指示するプロンプトを入力します。 例えば、「猫の飼い方について3分間で説明する動画を作成」などと入力します。 3.3 設定調整 動画の長さ、使用するアバター、背景音楽などの設定を調整します。 3.4 動画生成 AIが入力されたプロンプトと設定に基づいて動画を自動生成します。 3.5編集と微調整 生成された動画を確認し、必要に応じて編集や微調整を行います。 3.6エクスポートと共有 完成した動画をエクスポートし、SNSや動画プラットフォームで共有します。4. 活用方法 4.1 ブログ記事の解説動画作成 Chrome拡張機能を利用すれば、Webブラウジング中に記事を開いた状態でクリックするだけで、ブログ記事の解説動画を簡単に作成できます。 4.2 教育コンテンツの制作 複雑な概念や手順を分かりやすく説明する動画を素早く作成できます。 4.3 マーケティング用コンテンツ 製品やサービスの紹介動画を手軽に制作可能です。 4.4 SNS投稿用動画 TikTokやYouTubeショートなど、各種プラットフォームに最適化された動画を生成できます。5. ノーラングの強みと注意点5.1 強み ・AIによる迅速な動画生成 ・多様なテーマや形式に対応 ・直感的な操作性 ・日本語対応の充実5.2 注意点 ・生成された内容の正確性は要確認 ・著作権に関する配慮が必要 ・AIの特性上、予期せぬ結果が出ることもある6. まとめノーラングは、AIの力を借りてショート動画制作のハードルを大きく下げてくれるサービスです。無料で試せる機能もあるので、まずは体験してみることをおすすめします。動画コンテンツの作成に悩んでいる方、効率的に情報発信したい方は、ぜひ一度チェックしてみてはいかがでしょうか?AIの進化とともに、こうしたツールの精度と使いやすさは今後さらに向上していくことでしょう。
2024.07.14
コメント(0)

ロジカルシンキングには、コンテクストの理解が非常に重要です。ロジカルシンキングを行うためには、ローコンテクストとハイコンテクストの違いを理解し、適切に対応することが求められます。1. ローコンテクストとハイコンテクストとはローコンテクストとハイコンテクストは、文化人類学者エドワード・T・ホールが提唱した概念で、コミュニケーションのスタイルや情報の伝達方法を分類するものです。2. ローコンテクストとハイコンテクストの主な違い特徴ローコンテクストハイコンテクストコミュニケーションスタイル明確で直接的暗示的で遠回し情報の伝達方法言葉で詳細に説明共通認識や暗黙の了解に基づく背景知識への依存度低い高い主な文化圏欧米諸国アジア圏3. ローコンテクストの特徴具体的で解釈の幅が狭い (言葉の意味が明確で誤解が少ない)明確性と直接性を重視5W1Hを意識した詳細な説明 解釈の余地が少ない (言葉そのものの意味に重点が置かれる)新入社員の育成や異文化間のコミュニケーションに有効4. ハイコンテクストの特徴抽象的で解釈の幅が広い (言葉の意味が背景や文脈に依存する)「空気を読む」ことが求められる (言葉以外の情報から意図を汲み取る能力が必要)言葉少なに意図を伝達文化や背景を共有している人との間で効果的 (共通の理解が前提となる)クライアントやユーザーのニーズを細やかに汲み取るのに適している5. ロジカルシンキングでのコンテクストの重要性ロジカルシンキングを実践する際、ハイコンテクストな情報では論理的な答えを導き出すのが難しくなります。脳は基本的にハイコンテクストな情報を好み、抽象化や単純化を行う傾向があります。これは効率的ですが、ロジカルシンキングを妨げる要因となります。そのため、ロジカルシンキングを行うには、ローコンテクストの情報を材料にすることが必要です。6. ローコンテクストにするためには「〇〇にも色々あるけれど」をつけて考えてみると具体化しやすくなります。例:タコにも色々あるけれど →タコという言葉にも、「凧」「蛸」など色々な言葉があります。イカにも色々あるけれど →イカという言葉にも、「イカ」「以下」「医科」など色々な言葉があります。 このように具体的に、明確に、特定できるようにすることが必要です。7. 情報を完全に具体化出来ない場合 可能性のある複数のケースを洗い出して検討することで、具体化します。8. まとめローコンテクストとハイコンテクストの違いを理解し、状況に応じて適切に使い分けることで、より効果的なコミュニケーションが可能になります。ロジカルシンキングを実践する上で、この理解は重要な要素となっています。
2024.07.14
コメント(0)

今回は、新しいAIサービス「Perplexity AI(パプリシティAI)」について詳しく見ていきたいと思います。Webサーチと言語モデルを組み合わせたこのサービスは、多くの可能性を秘めています。ChatGPTとの違いや便利な機能、活用シーンなどを含めて、徹底的に解説していきます。Perplexity AI:https://www.perplexity.ai/実際の使用画面※これ以外にも色々な使い方が出来る。Perplexity AIとは?Perplexity AIは、ChatGPTと同様にテキストボックスに質問を入力すると、豊富な言語モデルが回答を生成してくれるサービスです。しかし、いくつかの重要な違いがあります:Webサーチが可能なため、最新の情報を反映した回答が得られる情報の参照元に簡単にアクセスできるChatGPTやエンジニア向けのCopilotとは異なり、検索エンジンを用いたAIとして機能するさらに、Perplexity AIは以下の特徴を持っています:元のGoogleの検索結果に似た結果を出力質問に対し、検索結果を要約かつ整理して提示しているチャットGPTやエンジニア向けのCopilotとは異なる使い方ができる実際の使用方法Perplexity AIの使い方は非常にシンプルです:チャットGPTと同様の質問形式で使える表示したWebサイトの一覧が表示され、必要に応じて個別のサイトを確認できる画像生成やPDFの活用、コレクション機能なども利用可能特筆すべきは、Direct GPTを活用して能動的に調べることで、日本語の情報を英語に自動翻訳し、英語の情報を参照して日本語で回答を提供する機能です。Perplexity AIの推しポイント性能:GoogleのバートモデルはチャットボットAPIのランキングで上位に位置しているが、Googleの検索結果を参照していないため、GPTほどは性能が出せないPerplexity AIはGPTやGoogle等のモデルを組み合わせて使えるため、より高性能な言語モデルを活用できるコパイロット機能:ユーザーの質問に対して、言語モデルからの回答を元に、より適切な質問を生成してくれる複数ソースの活用:Perplexity AIの設定で複数のWebサイトを参照させることができ、日本語で回答を得られるPerplexity AIの機能と使い方主な機能:パプリシティページ(質問ページ):ここで質問を入力し、回答を得ることができますファイルのアップロード:PDFなどのファイルをアップロードし、内容を解析することができます複数ジャンルの入力:様々な分野の質問に対応可能です使い方:さまざまな文法で使用可能:自然な文章で質問できます言葉を補ってくれる:入力途中でも適切な補完を提案してくれます秘密の情報を聞かない:個人情報などのセンシティブな質問は避けるようプログラムされています検索に使ったサイトが一番下に表示される:情報源を簡単に確認できますPerplexity Pages:検索結果をまとめてくれる:複数のソースから情報を集約し、要約してくれます検索結果を要約した内容を掲載:長文を読む必要がなく、効率的に情報を得られます英語だけでなく日本語にも対応:多言語対応で便利ですChatGPTとの違い情報源が明確かつ、アクセス可能返答内容の情報源へのアクセスが出来るため、信用度がChatGPTより高い。最新の情報へのアクセス:Perplexity AIは検索エンジンの機能を活用し、最新の情報から回答してくれる。検索範囲を指定、狭めることが可能Perplexityが検索する範囲を指定し、絞ることが出来る。Perplexity AIの活用シーン論文執筆や学術研究:最新の研究動向を把握参考文献の効率的な検索と要約ビジネス分析:業界動向の迅速な把握競合他社の情報収集技術者向け:プログラミングの問題解決新しい技術のキャッチアップ日常的な使い方:料理レシピの検索と要約旅行計画の立案サポート学習サポート:複雑な概念の理解効率的な情報整理Perplexity AIの主な機能とプランPerplexity AIは無料版と有料版(Pro)があります。主な機能と各プランの違いを見てみましょう:無料プラン:1日のクエリ制限:5回Perplexity AIの基本機能が利用可能Pro(有料)プラン:1日のクエリ制限:300回高度な機能が利用可能(詳細は後述)Pro+(上位有料)プラン:1日のクエリ制限:無制限さらに高度な機能が利用可能Pro版の主な機能:GPT-4モデルの利用マルチモーダル(画像)機能Perplexity Copilotファイルのアップロード機能まとめPerplexity AIは、ChatGPTとは異なるアプローチで、Webサーチと高度な言語モデルを組み合わせた革新的なAIサービスです。最新の情報を反映した回答や、複数のソースからの情報集約など、ユニークな特徴を持っています。無料版でも基本的な機能を試すことができ、Pro版ではさらに高度な機能が利用可能です。ただし、注意点もあります:現在のユーザー数は100万人を超えるアクティブユーザーを持つ現状ではチャットGPTに比べるとユーザー数は少ない感想Perplexity AIを詳しく調べてみて、AIアシスタントの世界がますます進化していることに驚きました。ChatGPTが登場してからわずか1年余りで、このような高度な機能を持つサービスが登場したことは、技術の進歩の速さを物語っています。特に印象的だったのは、Perplexity AIがWebサーチ機能を統合していることです。これにより、常に最新の情報を基に回答を生成できるという点は、従来のAIチャットボットにはない大きな強みだと感じました。学術研究や業界分析など、最新情報が重要な場面での活用が期待できます。また、複数のソースから情報を集約し、要約して提示してくれる機能も非常に便利だと思います。情報過多の現代社会において、必要な情報を効率的に得られることの価値は計り知れません。
2024.07.13
コメント(0)

1. ゴール設定(G)目的と目標を明確にし、5W1Hを用いて具体化します。When:いつまでにWhat:なにをWho:だれがWhere:どこでWhy:何故How:どうやって2. PDCA サイクルP (Plan):計画 - 目的、目標、内容の理解と、それを達成するための進め方を計画する。D (Do):実行 - どのようにやるかを決定し、準備をし、実施する。C (Check):確認 - 実施状況の把握。適切に活動されているか、期待した結果になっているかを調査、確認する。A (Act):改善 - 究明された問題などを元に、改善すべき事項を特定し、改善に取り組む。次の活動に反映させる。改善の着眼点(3ム)ムリ、ムラ、ムダを見つけ出し、それを無くしていくことを追求する。3. QCD(品質・コスト・納期)Q (Quality):品質C (Cost):コスト(原価や費用)D (Delivery):量・納期4. PSME組織活動に関わる全ての人々の安全と健康を確保する活動。P (Productivity):生産性S (Safety):安全M (Morale):道徳、倫理E (Environment):地球環境保全5. SDCAS (Standardize):既に明確になっている良い方法を標準化する。D (Do), C (Check), A (Act):PDCAと同じ6. 思考の幅を広げる方法ロジカルシンキング:論理的思考クリティカルシンキング:批判的思考、批判的に分析して解決策を見つけるクリエイティブシンキング:創造的思考コンセプチュアルスキル:概念的思考力ラテラルシンキング:水平思考、横断的思考アナロジー思考:類推思考シナリオプランニング:複数の未来シナリオを考えるバックキャスティング:理想の未来から逆算して計画を立てるリスク管理思考:リスクを予測し対策を立てる7. 個人の成長と創造性の向上習慣化:良い習慣を身につける読書:知識を広げ、思考を深めるアーティスト・デート:週1回、1時間、新しい体験をする理想の自分を描く:どんな生活をしたいのか何をしたいのか何を成し遂げたいのか8. 上記以外の思考法システム思考:物事を全体的に捉え、要素間の相互作用を理解するデザイン思考:ユーザー中心のアプローチで問題解決を図るMECE(Mutually Exclusive and Collectively Exhaustive):分析や問題解決において、漏れなくダブりなく考えるフレームワーク思考:既存の枠組みを活用して効率的に問題を分析するマインドマッピング:アイデアや情報を視覚的に整理し、関連性を見出す9. 思考の質を高める習慣瞑想や mindfulness の実践:集中力と自己認識を高める定期的な振り返り:経験から学び、改善点を見出す異分野の知識を積極的に取り入れる:新しい視点や発想を得る他者との対話や議論:自分の考えを言語化し、多様な視点に触れる記録をつける習慣:アイデアや気づきを書き留め、後で振り返る
2024.07.07
コメント(0)
![]()
遊戯王検討(ゴーティスデッキ)ゴーティスデッキについて考えたいと思います。ゴーティスは、水属性、魚族のシンクロ召喚が主体のデッキで、チューナーは、自身が除外されると次のターンのスタンバイフェイズに戻ってくる効果が付いています。このデッキの活かしたい所として、自身が除外されても次のターンに戻ってくる部分と、そのターンにシンクロ召喚できること。エースモンスターとして最果てのゴーティスを相手ターンに特殊召喚することにより、フィールド全てのカードの除外を狙っていきます。これによって、自身はゴーティスの効果で次のターンも構えつつ、相手のリソースを削っていくことをメインに考えていきます。このカードたちは大体30円くらい、シンクロなども100円前後でそろうので、めっちゃ安く組めるのがいい所です。メインギミック まず、相手ターンに最果てのゴーティスをシンクロ召喚する為には、 魚族チューナーとチューナー以外のモンスターが必要です。 魚族チューナーは基本的にレベル2なので、 魚族チューナー(レベル2)とレベル8モンスターのシンクロを考えていきます。1.ぺイシス + 揺海魚デッドリーフ (1) ぺイシスの効果で、自身を除外し、揺海魚デッドリーフを特殊召喚。 デッドリーフは、デッキの魚族を墓地に送れるので、ゴーティスの妖精シフを墓地に送ります。 ぺイシスは、除外されると次のターンのスタンバイに戻ってくる効果と、 特殊召喚した相手ターンのメインフェイズにシンクロする効果を持っています。 (2)シフの効果でシフを除外します。 これで準備は完了です。 このシフも除外されると次のターンのスタンバイに戻ってくる効果と、 特殊召喚した相手ターンのメインフェイズにシンクロする効果を持っています。(3) ぺイシスとシフが次のターンのスタンバイにに戻ってきて、シフとデッドリーフでシンクロ6(4) アリオンポスをシンクロ召喚 アリオンポスの効果で、シンクロ召喚に成功するとレベル6以下の魚族モンスターを除外出来ます。 (5)アリオンポスで、紅玉のゼップをデッキから除外 このゼップは、自身が相手ターンに除外されると、フィールドに特殊召喚して、シンクロ召喚出来る効果を持っています。 ここで、ゼップが手札にある場合は、ゴーティスのゴーティスの月夜サイクスを経由して、 サイクスを除外、ゼップを手札から除外、サイクス特殊召喚、ゼップ特殊召喚、サイクスで何かをサーチし除外というようにしてもいいかもしれません。 (6) ゼップとアリオンポスでシンクロ8、 ゴーティスの双角アスカーンをシンクロ召喚 出来れば、相手のモンスター召喚タイミングに合わせて、アスカーンをシンクロします。 そうすると、アスカーンと相手のモンスターを除外 アスカーンの効果で、墓地のシフを除外、自身を特殊召喚します。 また、アリオンポスの効果で自身を除外して、レベル6以下の魚族モンスターを手札に加えて 次の行動に構えることが出来ます。 (7) これで、フィールドにぺイシス(レベル2チューナー)とアスカーン(レベル8)が出て、 最果てのゴーティスをシンクロ召喚する準備ができ、 次のターンに、シフを特殊召喚して次の展開の準備が出来ました。問題点としては、デッドリーフは三枚しかないので、引きにくく、ぺイシスもフィールド魔法を合わせて6枚しかないので、これ以外のギミックも欲しい所です。他の展開としては、 シフを除外しつつ、ぺイシスでレベル4魚族モンスターを特殊召喚出来ればいいので2. 最果ての宇宙 + シフ + レベル4魚族3. 愚かな埋葬や封印の黄金室 + ぺイシス + レベル4魚族4.ぺイシス + レベル4魚族モンスター + レベル4の特殊召喚できるモンスター5.ぺイシス + ゴーティスの守人イーノックなど、枚数は増えてしまいますが、これらでもレベル10展開を狙えます。 相性の良さそうなカードたち ・自分のカードを除外や墓地に送る系のカード・ゴーティスチューナーを除外することで次のターンに特殊召喚出来る。 ・シフやスノーピオを墓地におくことで、効果起動で展開の補助になる。・ゴーティスチューナーを除外しつつ、妨害が出来、ゴーティスチューナーは戻ってくるので使いまわせる。・最果ての宇宙を墓地に送り、最果ての宇宙の効果で手札に回収できる。・特殊召喚の牽制をしつつ、自分はゴーティスチューナーなどを除外しリソースとして扱うことが出来る。・特殊召喚効果と、妨害と除外効果があり、相性が良い。・魚族をデッキから特殊召喚出来る。 初動を増やせる。上記以外にも、魚族サポート系のカードなど様々なものがあります。参考:https://incitebrain.com/2021/07/21/fish-support-card-list/以上、安いのでぜひ組んでみてください。
2023.11.12
コメント(0)

1. 3月の反省 (1) 3月の実施事項 (a) ブログの作成、投稿 ・15記事投稿 →https://project-oki.hatenablog.com/archive/2023/3 (b) STM32の学習 ・WDTの使用方法について ・AD変換のDMA設定 ・DFplayer制御関数の作成 ・LCD制御用関数(ソース、ヘッダファイル)の作成 ・mp3player装置仕様作成、計画作成 ・スイッチ制御によるモード変更(途中まで) ・paizaの問題を解く。 (c) 毎日のストレッチ ・朝起きて、ダラダラストレッチ (d) 週末の運動: ・30分~1時間 (e) 全体学習、作業実施時間 ・96時間 (f) 習慣化確認 ・00stdio:30/31(96%)達成 ・毎日ストレッチ:朝起きて、ダラダラストレッチOK (2) 前月の改善点の確認 ・記録方法: 00stduioは続けれている。 改善事項をカレンダーの記録に反映させた。 やった日と、時間の記録を明確にする為だったが、 studyplusを導入したので、そちらで十分だった。 ただ、カレンダーとして見える化はできるので、続ける。 ・やらない日を設ける: やらない日を設けても、他の無駄なことをするだけなので。 やらない日と、その空き時間でやる内容をセットで決めた方がよさそう。 ・仕事: 時間、配分を意識しても、実際に割り込みなども多く、 その日決めた通りに行うのは難しい。 改善の余地が多い。 ・目的意識: 目的行動前に考えるようにしているが、曖昧に終わってる気がする。 効果を余り感じない。 書いて明確に後で見直せるようにする。 (3) 良かった所 ・習慣化目標は96%とほぼ達成でき、2月に比べて改善が出来ている。 ・毎週2記事のブログ投稿も出来ている。 ・studyplusを入れたことで、学習時間を見えやすくなったのは良い。 ・ストレッチ、毎週の運動習慣を続けれている。 ・STM32の学習を進められた。 ただ、まだ足りない。 ・paizaの問題を解くことで、スキルアップを見込めそう。 (4) 悪かった所 ・やらない日を設けることによる、通勤時間を作業時間にするという内容が、全然できなかった。 ・目的意識は、まだ薄く、忘れがち。 ・進捗が思ったより進まない。 ・仕事に活かせてない。 (5) 改善事項 ・やらない日と、その空き時間でやる内容をセットで決める。 →ソフトウェアに関する本を読むなど。 基本はインプットに使う。 ・目的意識:行動前に目的、目標について書くようにする。 ・達成目標と行動目標を分ける。 (6) 4月の目標設定 (a) 達成目標 ・スイッチ押下によるLCDのモード変更できるようにする。 ・mp3playerの作成完了 ・SPI通信のやり方について学習、まとめる。 (目的:STM32マイコンの使い方を学習、仕事でつかえるようにする。) ・プログラマー脳を読了、内容のアウトプットをする。 (b) 行動目標 ・00studioは続ける。 4月でサービスが終了してしまう為、別のものを探しておく。 ・毎日のストレッチを続ける。 ・帰宅、飯後にヨガストレッチを取り入れる。 (new) ・ブログを毎週1投稿以上 ・目的を書くようにする。関連記事:・2023年目標設定・2023/1やりたいことなど・2023年2月の反省会
2023.04.09
コメント(0)

1. 2月の反省 良かった所 ・00stdudioの配信達成率60%だが、継続できた。 ・2月はソレコンがあり、作成、投稿が出来た。 ・しかも、いいね賞を取ることが出来た。 ・毎週ブログ投稿が出来た。 投稿したブログ: ・https://project-oki.hatenablog.com/archive/2023/2 ・chatgptを用いることによりVBAでエクセルの効率化が出来た。 ・短期目標(DFplayer、ソレコン、ブログ作成)について達成できた。 悪かった所 ・2月は残業もあり、やる気も落ちてきて、平日の学習がおざなりになってしまった。 ・通勤及び、朝のダラダラの時間が多すぎる。 ・1月の反省を忘れてしまったのは、良くなかった。 ・ストレッチ、スクワットも毎日できなかった。 ・00stdio以外の記録が曖昧。 1月の毎日00stdio達成率:77.5% 2月の毎日00Studio達成率:60.7% 改善事項 ・記録:勉強を赤〇 + 時間をカレンダーに記録し、やった日、時間、内容を明確にする。 00stdioは継続する。 ・やらない日を設ける。 →なろうを読まない日 →twitterを開かない日 ・仕事: もっと時間、配分を意識する。 記録を取り、仕事も内容、時間などを明確にする。 ・少しずつでも習慣化を忘れても辞めないこと。 ※自分は怠けてしまう生き物なので、出来ない日はしょうがない。 わりと意識した上で、まあいいかとなるが忘れてなければOK ・目的意識をもっと明確に持つ。 → 目的について、行動前に考える習慣を身につける。 ・3月の習慣化目標:毎日ストレッチする。(10秒でもOK、軽く伸ばすだけでもOK) ・ソフトウェアに関する本を読む。(意識する)
2023.03.03
コメント(0)
2023/1 今月やりたい作業内容・DFplayerの抵抗接続に関する記事の作成・DFplayerのSTM32マイコンで操作する記事(回路)の作成・DFplayerのSTM32マイコンで操作する記事(プログラム)の作成・DFplayerをobnizを用いて、基板設計した記事の作成・STM32でソースファイルとヘッダファイルを作成する方法についての記事の作成・STM32のDFplayer用関数を作成及びその記事の作成・ソレコン用作品の作成及び動画の作成・ソフト設計用の本を1冊読む目標:https://plaza.rakuten.co.jp/tanosiisekaiwo/diary/202301060000/
2023.01.09
コメント(0)
1. ゴールの設定 ・習慣化によって、最終的にどうなりたいか、ゴールの設定を行う。 → ソフトウェア(組み込み)の設計、開発、プログラミングができるようになる。 ・どんな2023年にしたいのか →コンスタントに作業、勉強を行い、自己学習による自分の力を向上させたい。 →経験とアウトプットを大事にする。 2. 目標 大目標(今年の目標) ・期間: 1年間 ・達成する内容: (a) STM32マイコンでのプログラムの方法を一通り理解する。 (b) 学習内容をブログにアウトプットし、毎週1~2個記事を投稿する。 (c) ソフトウェア設計に関する本を6冊読破し、まとめる。 ・評価数値: (a)作業量の評価: 毎日00stdioを配信すること。配信数、作業時間をカウントする。 (b)作業内容の評価: 項目を書き出し、自身で設計できると思える内容の数を評価する。 実際にSTM32などC言語を用いた作品を4つ作成する。 中間目標 ・期間:6カ月 ・達成する内容: (a) STM32マイコンのSPI通信、キー押下処理(複数、長押し)、I2C通信の方法を学習し、ブログにアウトプットする。 (b) ソフトウェア設計に関する本を3冊読破し、まとめる。 ・評価数値: (a)作業量の評価: 毎日00stdioを配信すること。配信数、作業時間をカウントする。 (b)作業内容の評価: 最終月にすべてのブログ、アウトプット内容を見直し、分かりやすさを自分で評価する。 短期目標 ・期間:1カ月 ・達成する内容: (a) DFplayerを用いてSTM32マイコンでUART通信を行う方法について理解する。 (b) ブログに作成した内容をまとめる。 (c) ソレコン用動画作成 ・評価数値: (a)作業量の評価: 毎日00stdioを配信すること。配信数、作業時間をカウントする。 (b) 作業内容の評価 : DFplayerを用いたものを作成したかどうか。 プログラムの作成をしたかどうか。 3. 習慣化の内容 ・習慣化したい内容 →C言語及びSTM32の組み込みC言語の学習 4. 習慣化ルール ・習慣化するためのルール (a) 最低限毎日行うこと →00stdioで配信を開始する。 →できれば毎日最低1時間作業したい。 (b)記録方法 →00stdioで作業内容及び時間を記録する。 →twitterに作業時間と内容を投稿する。 5. 見直し時期 ・習慣化を行うにあたり、月に一度見直し、評価を行う。 →月初め又は月終わりの休日
2023.01.06
コメント(0)
習慣化を目指す 2023年習慣化したいことについて記載する。 習慣化のルールを設定する。 1. 習慣化とは ・自分が目指す理想像、ゴールを想定する。 ・ゴールに対し、中長期的な目標を決める。 ・目標を達成するために、「1日1時間〇〇をする」など 当たり前の行動として、自分の行動を自動化する。 2. 習慣化のルール ・習慣化に取り組むのは、一度に一つだけ ・シンプルかつ、取り組みやすい習慣をトリガーとして設定する。 ・シンプルに記録する。(日付、数値、その時の感情など) →twitter及び00stdioを使用予定 3. 1週間以降に取り組むこと ・時間、やり方、場所など取り組むパターンを決め、明確にする。 ・出来ない場合を想定し、その時用の例外ルールを設定する。 ・最初に設定したトリガーは最低限毎日行動すること。 また、出来る内容をトリガーとすること。 4. 3週目以降に取り組むこと ・時間は変えず、取り組む内容や環境を変え、変化を付ける。 ・次に習慣化したいことなどの検討、計画を立てる。 5. 習慣化する計画を立てる時のポイント ・優先順位を付ける。 ・今の習慣が身につくまで、次の習慣には取り組まない。 6. 習慣化のゴールを検討する。 ・2023年をどういう一年にしたいのか。 ・どういう人生にしたいのか。 ・何故、習慣にしたいのか。 など質問を作成し、その答えを明確にする。 →どんな状態になっていたいか? 7. 目標の設定(計画) ・内容を具体的にする。 ・期間を明確にする。 ・数値化する。 →いつまでに、何を達成したいのか? →1カ月後には、何を達成したいのか? 8. 振り返り(評価) ・月末など、1か月後に確認 → 当初の目標は達成できたのか? →先月とどう違ったか。 →目標が達成できた場合:なぜ達成できたのか? どうしたら、もっと効果的にできるか? →目標が達成できなかった場合:なぜ達成できなかったのか? どうしたら、もっと上手くいくのか? 9. 改善及び次の計画 ・自分の行動から、改善点を洗い出す。 ・次の目標、行動に反映させる。
2023.01.02
コメント(0)
こんにちはユキです。楽天ブログに投稿するのは久しぶりな気がします。最近、お湯にはちみつを入れて飲むのが、私のトレンドです。皆さんは、どうお過ごしでしょうか。さて、今回は、2022年の振り返りを行いたいと思います。今年の目標は立てないで色々やってしまったので、今年やったことをまとめたり、来年やりたいと思っていることをまとめたいと思います。来年の目標とかは来年書いて投稿します。 1. 今年の取り組み・ブログの作成、アウトプットを増やし、はてなブログをアドセンスを通して、収益化しました。 →毎週ブログ1~2投稿、アドセンスを通しました。 前期は楽天ブログ、後期は、はてなブログに投稿 作成したブログ:https://project-oki.hatenablog.com/entry/2022/10/31/080000 はてなブログの方が、書きやすいので、基本ははてなブログに投稿していく予定です。 こっちには、雑談とか、考えたこととか雑多な感じなことを書いていきたいです。 ・毎月の漫画の購入を3000円程度に抑える。 →去年まで毎月5千円~1万円くらいかけていたので今年からは、少し漫画の購入を抑えたいと思い、 3000円までに抑えました。 →割と出来てるが、やっぱり偶に一気買いしたくなり買っちゃう時もあります。 まあしょうがないと思います。・サブスク系を抑える。 →結構解約したので、支出は減らしました。・C言語、組み込み関連の勉強、C++Builderについて勉強、HTML系、ものの作成 →ブログ、scrapboxにアウトプットしました。 使い方を忘れても、次の時に役に立つかなと。 基本はプログラムの勉強を主に行いました。 来年はもっと、作成物のアウトプットに重きをおきたいですが、 まだまだ勉強することがあるので要検討項目です。・途中から、毎月の自分の資産把握 →見える化出来て良かったので、来年も続けたいと思います。 youtubeでの情報収集を増やしたりもしています。・婚活的なこと(少しの間やってみた) →友達から教わり、恋庭というアプリをやってみました。 楽しかったですが、次に繋がらないことが多くて、苦痛になって、 婚活的な目的としては辞めました。 今は、普通にチャットしたりする緩い感じで楽しんでます。 一度会ってそれで駄目と判断する感覚が自分には合わないなっていう感じです。 そこまで、結婚とかに拘りもないので、割と結婚は諦め気味。・友達とコンスタントに遊ぶ →来年は、これもアウトプットに繋げて、経験を活かしたいです。・ノートやtwitterに毎日の予定と実施事項を記載や日記を書こうとした。 →中々続かないです。 12月から00stdioで作業を録画し、タイムラプスを作成、twitterに投稿しています。 基本平日は毎日作業通話して、作業時間を持つようにしています。 ただ、これが来年もずっと続けられるだろうか・・・ 2. 反省・ブログは書いているが記録を途中で辞めてしまった。続いていないです。・目標とか目的、何を目指しているのかが良くわからなくなってしまったので、 目標確認はやっていきたいと再度思いました。・やる気があるときはいいが、沢山書こうとしても辞めてしまうのは、私の悪いところですね・・・・学習時間が少なかったり、曖昧でした。 →来年は、twitterやブログなどを使って記録を取ります。・継続的な目標に向けての勉強を目指す。・通勤時間などに、なろうや、漫画を読んでしまい、学習時間に中々当てられなかった。 →読みすぎですね・・・ →通勤時間を有意義な時間に出来るように、検討したいと思います。3. 自分の目指す人生とは・自分が目指す人生ってどんな人生でしょうか。 割と私はあいまいで、今の生活で満足してしまっている感は否めません。 ただ、やはりもっと自由な時間の確保。 出来れば、仕事は辞めて、やりたいことに時間を使いたいです。・結婚はしたいかというと、どちらかといえばしたいかもですが、 その為に努力や時間をさけるかというと、難しいかなぁ。 努力してどうにかなるイメージが付かないのが問題ですね。 友達とも遊びたいし、やりたいことも多いです。 怖いのは、これが10年後とかに後悔しそうなことです。 そんな話を良く見聞きするので、大丈夫か割と不安です。・偉くなりたいわけでも、お金持ちになりたいわけでも、凄い人になりたいわけでもない。 ただ、平凡な毎日を、普通に過ごしたい。 苦しくない生活を送っていきたい。 4. 現状の辛いこと ・仕事で自分にかかる責任、プレッシャー、上司からの圧力が辛い時が多々あることです。 自分の能力では、出来る気がしない部分も多くあります。 仕事の内容自体は嫌いじゃないですが・・・ それによるやる気の低下、日常生活の質の低下が年々大きくなっている気がします。 それを、来年はどうにかしていきたいです。 ただ、去年からソフトに移動したこともあり、 今の時点で組み込みC言語、C++アプリケーション開発についていけてないところがあります。 それに加えて、MDRなどの規格関連の仕事も増えていきそうで、勉強が追い付かなそう・・・ それらもこれをすれば出来るようになるという道筋もないので、やる気の低下が起こっていますね。 特に明確に指示があるわけでもないので、責任もありますし、仕事って難しく大変ですね・・ 自分の出来る範囲でやっていくしかないが、上司の求めるレベルには、全く達していない感じです。 漫画とかであれば、壁が立ちふさがった時に適切な指導者による助言や、 主人公の成長などで超えられるような展開が待っているが、人生とはそうはなっていません。 自分自身が、一年前、数年前の自分と比べてみると、前より少し出来ることが増えていたりして、 ちょっとだけ成長出来ているような気もする程度です。 劇的な成長というものを実感したりです。 ここ数年で仕事に対する自信は、木っ端みじんになり、お亡くなりになりました。 ・副業関連は他人から教わってやるのは諦めました。結構お金と時間かけたんですけど。 私には無理でした。 世の中にはいいものもあるかもしれないが、自分にはそれを掴む運も能力もないと学んだので、 今後は投資を中心に、自分の資産と、やりたい勉強に主眼を置いていきたいと思います。 5.改善事項、行動内容 ・目的、目標、どうしたいのかを見失いがち。→改善:毎月、月初めに、その月の目標を目に見える形で表す。(twitter or ブログに記載)・毎日twitterでその日の作業について記録。 00stdioで配信、記録。 →継続:日付、作業時間、作業内容・その月の最終週に、その月の記録を確認し、達成度を確認する。(数値化) 評価を行い、改善点などを挙げていく。 また、次の月の目標などを検討する。 →改善:目標レベル。作業時間。記録の確認。・一個議題を決めて、それについて5分以内で説明するのを毎週やりたい。 ロジカルシンキング、説明力の向上、学習効果の向上を見込む。 問題点:分かりやすい説明とはいっても、 誰に、なんのための説明なのかを明確にしないと、説明にはならない。 5.やりたいこと、来年の実施内容など ・毎月の資産把握・STM32(組み込み)、C言語勉強・ものづくり →もっと色々なアイディアを出し、簡単なものから色々作っていきたい。・毎日の勉強習慣:PDCAを回す。・ブログ作成(勉強、体験記事などの作成)・ソレコン作品作成・筋トレ、運動。 →平日の運動が難しい。やる気が死んでる。・毎日の勉強などの記録: →予定を立てる。やることを明確にする。記録を取り、残す。・目標を立てて、それに沿った行動をする。・記録・株やFXついての情報収集、投資など。・考えのアウトプット:はてなブログ、楽天ブログに書き込み。・漫画、なろうなどを読みその感想などをまとめる、アウトプットにつなげる。ただ、最近読みすぎている。 →電車内での勉強方法について考える。 もっと気軽に手が出せるものを用意したい。 →今のやつは重すぎて、出す気にならない。 →出来れば、スマホで勉強できるようにした方が良いかも。 →何かを考える時間に使いやすいかも? 見直しを要検討・その年の反省と来年の目標設定などをブログに書いておく。 →ブログが一番残ってて、見てわかりやすい気がする。・やったこととか結構忘れてしまうので、思い出とかをしっかり残していきたい。・辞めてしまったが、00stdio使って記録に残し、twitterとかに残して置くのを再開したい。 →特に現在00stdioは有料になってしまったので、やる気の一端になるかも? →12月から再開 6. 出来ればやりたい・ITパス/基本情報技術者試験勉強、勉強内容をブログにまとめる。・毎日の日記作成・英語勉強・ガボールアイで視力向上・読書と感想まとめなど。・説明力を付ける。 →説明内容を箇条書きで書き出す。 ポイントを明確にする。→説明動画を取り、自分がした説明を確認する。 →人に見てもらう? →朗読などを行い、声の抑揚や聞きやすさを向上させたい。・論理力をつける。 →論理的に物事を導き出し、何故必要なのかを明確にする。 →わかりやすく、明確に。 これらは、目に見えた能力の向上が分からない為、中々続かない。途中で辞めてしまう。・英語力 →英語のリスニング、データシートなどを読めるようにしたい。 7. その他やらないといけないこと。・会社の勉強関連・MDR,IEC660601-1関連の勉強、確認・組み込みC言語関連の勉強・webアプリ(C++)の勉強 8.今年見た中で、一番好きな言葉 人は考える葦である。 (アオアシより) 去年:一日一生 9.関連記事・2021/7目標と改善・2021年の目標・2020年の振り返り・2020年終わりの日記
2022.12.30
コメント(0)

こんにちはユキです。FXのスワップで月5万の不労所得を目指す(その4)で、積み立て計算をしました。そこで、メキシコペソをお勧めしているわけですが。円安によって、最近メキシコペソが上がってきており、2022年10月現在では、7.2円程度になっています。積み立てでは、毎月3万円を入金して、1lot積み立てしましたが。今回は、・値上がりしたらいくら入れるのか。・年率計算を書いていきます。値上がりしたらいくら入れるのかについて自分の場合は、ざっくり6円以下 :3万円6円~8円 :4万円8円~10円 :5~6万円と考えています。10円以上になってしまったらというのはまだ考えてません。そこまで円安は進んでほしくないです・・・理由:ざっくりと考える場合、1lotを購入した場合1円で1万円増減するので、ざっくり、30000円を入金した場合、1lot購入した時から、3円下がるとロストカットされると考えられます。つまり、6円で30000円入金しておけば、だいたいメキシコペソが3円になって、ロストカットされるということです。そして、自分はこのロストカット金額を3円程度になるようにしたいので、上記のような配分になっています。これは、2点理由があります。1. 今までのメキシコペソの最安値が4.5円程度なので、3円であれば、十分安全な範囲だと思っている。2. もしも4円とかまで下がってしまった時は、むしろチャンスに変えられる。6円以下で3万円を入金すると考えれば、実際には、5円や4円でも3万円で1lot入金することにより、リスクの低減が出来るのです。5円で1lot購入した時に、3万円入れておけば、そこからロストカットまでの金額は2円になります。つまり、元々6円では3円だったロストカット金額が、少し下がるというわけです。みんなのFXで計算してみます。(1) 現在(7.29円)の時に、入金40000円で1lot購入した場合のロストカット金額(2) 5円の時に、入金30000円で1lot購入した場合のロストカット金額(3) 7.29円で、1lot購入、5円で1lot購入し、70000円入金した時のロストカット金額(1)の時(2)の時(3)の時(5円と7.29円購入時の平均購入額が6.14円になる)証拠金計算:https://min-fx.jp/market/margin/このように、メキシコペソが下がっても、ルール通りに買い増しすることにより、リスクは一層下がると考えています。では、この方法で運用した時の年率を見てみます。・年率計算年率の計算 = 年間/入金額で計算現在のメキシコペソのスワップは、みんなのFXで大体15円/日 程度です。年間を通して、ずっとそうではないですが。見込みとしては、十分安全を見込んで、13.69%を出せそうな水準にあります。そして、これは来年までは続くのではないかと思っていて。現在日本以外の国は、金利を上げていますが。日本だけは、金利を上げていません。その為、円安になり、またスワップも魅力的な水準にあるのです。なので、自分は現在27lot程度持っているので、月にスワップで1万2千円+月始めに4万円で、月に1.2lot買い増しという感じで積み立てていっています。当たり前ですが、ここから円高に振れて、マイナスになる可能性やいきなり日銀が、政策を変えて、金利上がてくる可能性(まあ無いと思いますが)もあるので、十分注意して取引しましょう。個人的に使ってる取引所は、みんなのFXです。DMMやLINEなど複数取引所は開設してあるのですが。自分が知ってる範囲だと、メキシコペソのスワップが一番いいので、現在はみんなのFXを使っています。もしも、もっとスワップがもらえるところあったら教えてください。他の関連記事:FXで不労所得を目指す(全4回)・FXのスワップで月5万の不労所得を目指す(その1)・FXのスワップで月5万の不労所得を目指す(その2:スワップ比較) ・FXのスワップで月5万の不労所得を目指す(その3:積立資金の確認) ・FXのスワップで月5万の不労所得を目指す(その4:長期積み立てで月5万)・FXのリスクについてFXの言葉の意味:・ロストカットとは (2)・証拠金維持率とは・純資産とは・レバレッジとは・ロットと取引量とは・1000通貨、10000通貨とは・スワップポイントとはおいしかったので、おすすめのふるさと納税【ふるさと納税】 佐賀県産 黒毛和牛 切り落とし 1,000g (500g×2パック) 合計1kg 吉野ヶ里町/石丸食肉産業 [FBX001]価格:10000円(税込、送料無料) (2022/10/10時点)楽天で購入
2022.10.10
コメント(0)
![]()
自分が使っているスマホは、xperia j1 premiumであったが、ついに壊れかけのような挙動をし始めた。そこで、新しいスマホを買った。私は、nuromobileと契約しているため、そこから購入することにした。本当は、xperiaが良かったが、残念ながら売り切れだ。そこで買ったのは、OPPO Reno7 Aだ。それを起動し、設定をしようとした所、なんと、データの移行がスマホ同士をUSBケーブルで繋げると簡単に出来る見たいだ。しかし、ケーブルがない・・・どうしようか考えた結果、買うことにした。一旦、電源を切り、ケーブルを購入することにしよう。どっちもC type口のケーブルが必要で、そういえばPCにもtype Cを接続する部分があったので、丁度いいと思ったのだ。Type-C to Type-Cケーブル USB Type-c 3A 60W 充電ケーブル 1m PD3.0急速充電 QC3.0対応 Quick Charge3.0対応 断線に強い価格:499円(税込、送料無料) (2022/7/28時点)楽天で購入
2022.07.28
コメント(0)
![]()
今気になっているふるさと納税の商品まとめ【ふるさと納税】HIGH CLEAR ウェイトダウンマッハ 炭 プロテイン 1kg ココア【1104249】価格:10000円(税込、送料無料) (2022/7/2時点)楽天で購入【ふるさと納税】島根県産 干し芋 1kg ( 100g × 10袋 ) | ほしいも 芋 いも 小分け 国産 さつまいも さつま芋 薩摩芋 お菓子 おかし おつまみ おやつ 個包装 保存 お取り寄せ グルメ 人気 おすすめ 美味しい 美味い 島根県 出雲市 楽天 期間 限定価格:10000円(税込、送料無料) (2022/7/2時点)楽天で購入【ふるさと納税】湯浅熟成肉 国産牛 切り落とし 1.5kg 牛肉 切落し 大容量 すき焼き しゃぶしゃぶ 国産 送料無料 ふるさと納税 熟成肉価格:10000円(税込、送料無料) (2022/7/2時点)楽天で購入
2022.07.02
コメント(0)
![]()
ポリフォーリズムとは1.本日の内容 (1) ポリフォーリズムについて理解する。2.内容 (1) ポリフォーリズムとは ・同じ名前の関数を複数定義して、状況に応じて呼び出す関数を使い分ける仕組みのこと。(2) C++でのポリフォーリズムの実装 ポリモーリズムを表現する方法として下記2つがある。 ・オーバーロード 同一クラス内でも「引数の型」もしくは「引数の数」を変え、 同じ名前の関数を複数定義出来る。 ・オーバーライド(override) 親クラスと子クラスに同じ名前、同じ戻り値、同じ引数を取るメンバ関数が存在し、 子クラスをでその関数を使用する場合、子クラスのメンバ関数が実行される。 (子クラスのメンバ関数は、親クラスのメンバ関数をオーバーライドするという) (3) virtual修飾子と仮想関数 仮想関数: ・C++では、継承元のクラス(親クラス)から 継承先のクラス(子クラス)のメンバ関数を呼び出せない。 ・親クラスで、子クラスのメンバ関数を呼び出すには、仮想関数を使用する。 ・仮想関数を作成するのに、virtual修飾子を使用する。(4) プログラムで確認//main.cppの作成//ーーーーーーーープログラム開始ーーーーーーーーーーー//メイン.cppの作成 #include <iostream> #include "oya.h" #include "ko.h" using namespace std; int main(int argc,char** argv){ //親クラスのインスタンス作成 Oya* pOya; Oya* pKo; pOya=new Oya(); pKo=new Ko(); //子クラスのインスタンス作成 Ko* pKo2 = new Ko(); //親クラス関数実行 //virtual修飾子あり pOya->oyaSing(); pKo->oyaSing(); //pKo->koJump(); //コメントを外すとエラー //virtual修飾子なし pOya->oyaRun(); pKo->oyaRun(); //子クラスの関数実行 pKo2->oyaSing(); pKo2->oyaRun(); pKo2->koJump(); return 0; }//ーーーーーーーープログラム終了ーーーーーーーーーーー//oya.hの作成 //プログラム内容:親クラスの宣言、作成//ーーーーーーーープログラム開始ーーーーーーーーーーー//oya.hの作成 #ifndef _OYA_H_ #define _OYA_H_ //親クラスの作成 class Oya{ public: //関数oyaSingを宣言 //「歌う」を表示する virtual void oyaSing(); //関数OyaRunを宣言 //「走る」を表示する。 void oyaRun(); }; #endif //oya.h終了//ーーーーーーーープログラム終了ーーーーーーーーーーー//oya.cppの作成 //プログラム内容:親クラスの処理を実装//ーーーーーーーープログラム開始ーーーーーーーーーーー//oya.cppの作成 #include <iostream> #include "oya.h" using namespace std; //関数の作成 void Oya::oyaSing(){ cout<<"歌う(親)"<<endl; } void Oya::oyaRun(){ cout<<"走る(親)"<<endl; }//ーーーーーーーープログラム終了ーーーーーーーーーーー//ko.hの作成 //プログラム内容:子クラスの宣言、作成//ーーーーーーーープログラム開始ーーーーーーーーーーー//子クラスのヘッダ //ko.h作成 #ifndef _KO_H_ #define _KO_H_ //oyaクラスのインクルード #include "oya.h" //子クラスの作成 class Ko:public Oya { public: //関数oyaSingを宣言 //「歌う」を表示する。 void oyaSing(); //関数oyaRunを宣言 //「走る」を表示する。 void oyaRun(); void koJump(); }; #endif //ko.h終了 //ーーーーーーーープログラム終了ーーーーーーーーーーー//ko.cppの作成 //プログラム内容:子クラスの処理を実装//ーーーーーーーープログラム開始ーーーーーーーーーーー#include <iostream> #include "ko.h" using namespace std; //関数の作成 void Ko::oyaSing(){ cout<< "歌う(子)"<<endl; } void Ko::oyaRun(){ cout<< "走る(子)"<<endl; } void Ko::koJump(){ cout<<"ジャンプ(子)"<<endl; }//ーーーーーーーープログラム終了ーーーーーーーーーーー実行結果:https://paiza.io/projects/etEkUIqkyBeG0BZzS7WC-w?language=cpp(5) C++基礎学習終了について C++の基礎学習は、今回のポリフォーリズムで終わりになります。 次回からは、C++ Builderの使い方、C++ Builderでアプリを作りながらの学習になります。 ここまでの内容は「1週間でC++の基礎が学べる本 (1週間プログラミング)」の 5日目までの内容を、自分が必要な部分を学習してきました。 その為、「1週間でC++の基礎が学べる本 (1週間プログラミング)」では、 もっと詳しい内容が載してあります。 また、6日目、7日目の内容には ・テンプレートとSTL(スタンダードテンポラリライブラリ)について →C++で用意されているライブラリの使い方(vectorやlistなど) →テンプレートとは ・覚えておきたい基礎知識 →参照渡し →クラスの相互参照 →stringクラスの応用 →インターフェースについて →オーバーロードについて などの、C++を扱う上で、重要な項目があります。 もしもC++を学習したい方が居ましたら、是非自分の手で取って、学習することをお勧めします。 ここで、6日目、7日目の内容に振れないのは、下記3点の理由からです。 ・誤った情報があるかもしれないので、自分で書籍を買って、しっかり確認、学習してほしい。 ・自分が必要な知識が5日目までで十分で、C++ Builderを先にやる必要がある。 ・一通り確認しているので、必要になったら、再度まとめるつもり。以上、ここまで読んでくださりありがとうございました。3.関連記事・C++勉強メモ1(Hellow worldの表示)・C++勉強メモ2(数値、文字の入出力)・C++勉強メモ3(名前空間とは) ・C++勉強メモ4(ポインタ)・C++勉強メモ5(クラス1)・C++勉強メモ6(クラスについて2_アクセス指定子) ・C++勉強メモ7(クラスについて3(ゲッターとセッター)) ・C++勉強メモ8(コンストラクタとデストラクタ) 4.参考にしている本1週間でC++の基礎が学べる本 (1週間プログラミング) [ 亀田 健司 ]価格:2860円(税込、送料無料) (2022/3/20時点)楽天で購入
2022.05.21
コメント(0)

Protectedメンバに関して1.本日の内容 (1) Protectedメンバについて理解する。2.内容 (1) アクセス指定子 ・メンバ変数やメンバ関数にアクセス出来る範囲を指定するための修飾子。 前の記事:・C++勉強メモ6(クラスについて2_アクセス指定子) この記事では説明しなかったProtectedメンバについて記載する。(2) アクセス指定子の種類 アクセス指定子 意味 public :全ての範囲からアクセス可能 private :同一クラス又は同一インスタンス内でのみアクセス可能 protected :同一クラス又は同一インスタンス内もしくは、 サブクラス及びそのインスタンス内でのみアクセス可能 (3) アクセス指定子のアクセス可能範囲 (4) 説明 ・基本的に他のアクセス指定子(publicやprivate)と使い方は同じ。 ・アクセス可能な範囲が違う。 ・protectedで宣言されたものは、親クラスや子クラスからは、アクセス可能 ・クラス外から、参照することはできない。(5) プログラムで確認 ・前回のプログラムで、計算表示部分をprotectedメンバに変更する。 ・mainプログラムでは、コメントアウトする。 (コメントを外すと、エラーになることを確認) ・子クラス側、計算表示関数を実行する関数を作成する。//main.cppの作成//ーーーーーーーープログラム開始ーーーーーーーーーーー#include <iostream>#include "oya.h"#include "ko.h"using namespace std;int main(int argc,char** argv){ cout<<"--Oyaクラスの処理--"<<endl; //Oyaクラスのインスタンスの生成 Oya* pOya = new Oya(); //数値を代入 pOya -> oyaSet(10); //計算結果の表示// pOya -> oyaIndi(20); //protectedなのでエラー //代入した値の表示 cout<<"Oyaクラスの総数:"<<pOya ->oyaGet()<<endl; //Oyaクラスのインスタンスの削除 delete pOya; //Koクラスの動作 cout<<"--Koクラスの処理--"<<endl; Ko* pKo = new Ko(); //Koクラスのインスタンス作成 //Koクラスに数値を代入 pKo -> oyaSet(100); //Koクラスの計算結果の表示// pKo -> oyaIndi(200); //protectedなのでエラー //Koクラスの代入値を表示 cout<<"Koクラスの総数:"<<pKo -> oyaGet()<<endl; //Koクラスで生成したko_numの数値の初期値 pKo -> ko_A(); pKo -> ko_B(); delete pKo; return 0; } //ーーーーーーーープログラム終了ーーーーーーーーーーー//oya.hの作成 //プログラム内容:親クラスの宣言、作成//ーーーーーーーープログラム開始ーーーーーーーーーーー//oya.hの作成#ifndef _OYA_H_#define _OYA_H_//親クラスの作成class Oya{public: //コンストラクタ Oya(); //デストラクタ virtual ~Oya(); //関数oyaSetを宣言 //数値を書き込む関数 void oyaSet(int set); //関数OyaBを宣言 //数値を読み込む関数 int oyaGet();protected: //関数oyaIndiを宣言 //計算及び表示する関数 void oyaIndi(int num); private: //変数の宣言 int oya_set;};#endif //oya.h終了 //ーーーーーーーープログラム終了ーーーーーーーーーーー//oya.cppの作成 //プログラム内容:親クラスの処理を実装//ーーーーーーーープログラム開始ーーーーーーーーーーー//oya.cppの作成#include <iostream>#include "oya.h"using namespace std;//コンストラクタ//親クラスの変数を初期化Oya::Oya():oya_set(0){ cout<<"親クラス(Oya)のインスタンス生成"<<endl;}Oya::~Oya(){ cout<<"Oyaクラスのデストラクタ"<<endl<<endl;}//セッター (数値の書き込みを行う)関数の作成void Oya::oyaSet(int set){ oya_set = set;}//ゲッター(oyaSetに書き込みした数値を呼び出す)関数の作成int Oya::oyaGet(){ return oya_set;}//計算及び表示する関数void Oya::oyaIndi(int num){ cout<<"Oya::oyaSetに代入した数値:"<<oya_set<<endl; cout<<"oyaIndiに入力した数値*oyaSetに入力した数値:"<<oya_set*num<<endl; //計算 oya_set = oya_set*num;} //ーーーーーーーープログラム終了ーーーーーーーーーーー//ko.hの作成 //プログラム内容:子クラスの宣言、作成//ーーーーーーーープログラム開始ーーーーーーーーーーー//子クラスのヘッダ//ko.h作成#ifndef _KO_H_#define _KO_H_//oyaクラスのインクルード#include "oya.h"//子クラスの作成class Ko:public Oya {public: //コンストラクタ Ko(); //デストラクタ ~Ko(); //関数の作成 //数値を表示する関数 void ko_A(); void ko_B();private: //表示用変数 int ko_num;};#endif //ko.h終了 //ーーーーーーーープログラム終了ーーーーーーーーーーー//ko.cppの作成 //プログラム内容:子クラスの処理を実装//ーーーーーーーープログラム開始ーーーーーーーーーーー#include <iostream>#include "ko.h"using namespace std;//コンストラクタKo::Ko():ko_num(20){ cout<<"Koクラスのインスタンス生成"<<endl;}//デストラクタKo::~Ko(){ cout <<"Koクラスのデストラクタ"<<endl;}//数値を表示する関数の作成void Ko::ko_A(){ cout<< "ko_numの値:"<<ko_num<<"\n"<<endl;}void Ko::ko_B(){ oyaSet(10); oyaIndi(10);} //ーーーーーーーープログラム終了ーーーーーーーーーーー実行結果:https://paiza.io/projects/oTdAAqXusahGxbellodGAQ?language=cpp3.関連記事・C++勉強メモ1(Hellow worldの表示)・C++勉強メモ2(数値、文字の入出力)・C++勉強メモ3(名前空間とは) ・C++勉強メモ4(ポインタ)・C++勉強メモ5(クラス1)・C++勉強メモ6(クラスについて2_アクセス指定子) ・C++勉強メモ7(クラスについて3(ゲッターとセッター)) ・C++勉強メモ8(コンストラクタとデストラクタ) 4.参考にしている本1週間でC++の基礎が学べる本 (1週間プログラミング) [ 亀田 健司 ]価格:2860円(税込、送料無料) (2022/3/20時点)楽天で購入
2022.05.14
コメント(0)
![]()
継承1.本日の内容 (1) 継承について理解する。2.内容 (1) 継承とは ・あるクラスの性質を受け継いで、新しいクラスを作成すること。 ・例:Class Aがあり、Class Aに追加して違う機能を付けたClass Bを作成したい場合に使用。 ・継承元となるクラスを親クラス、スーパークラス、基底クラスと呼ぶ。 ・親クラスを継承し、独自の機能を実装したクラスを子クラス、サブクラス、派生クラスと呼ぶ。(2) 継承の使用方法 class 子クラス名:pbulic 親クラス名 例:class Ko:pbulic Oya{ 子クラスの処理 }; Ko :子クラス Oya :親クラス の場合 (3) プログラムで確認する。 プログラム内容: 親クラス(Oya)と子クラス(Ko)を作成する。 親クラスで、「値をセット、値を取得、値を計算及び表示する」関数を作成 子クラスで、追加で、子クラスの値を表示する関数を作成する。 子クラスで、親クラスから継承した値をセット、値を取得、値を計算及び表示する関数を使用する。//main.cppの作成 //プログラム内容:Oyaクラス、Koクラスを作成し、動作を確認する。 //Oyaクラスで作成した関数をKoクラスで扱い、結果を表示する。 //Koクラスで作成した関数を実行する。//ーーーーーーーープログラム開始ーーーーーーーーーーー//ヘッダのインクルード#include <iostream> #include "oya.h" #include "ko.h" //名前空間の宣言 using namespace std; //メイン関数処理 int main(int argc,char** argv){ cout<<"--Oyaクラスの処理--"<<endl; //Oyaクラスのインスタンスの生成 Oya* pOya = new Oya(); //数値を代入 pOya -> oyaSet(10); //計算結果の表示 pOya -> oyaIndi(20); //代入した値の表示 cout<<"Oyaクラスの総数:"<<pOya ->oyaGet()<<endl; //Oyaクラスのインスタンスの削除 delete pOya; //Koクラスの動作 cout<<"--Koクラスの処理--"<<endl; Ko* pKo = new Ko(); //Koクラスのインスタンス作成 //Koクラスに数値を代入 pKo -> oyaSet(100); //oyaクラスで作成した関数を実行 //Koクラスの計算結果の表示 pKo -> oyaIndi(200); ////oyaクラスで作成した関数を実行 //Koクラスの代入値を表示 cout<<"Koクラスの総数:"<<pKo -> oyaGet()<<endl; //Koクラスで生成したko_numの数値の初期値 pKo -> ko_A(); delete pKo; return 0; } //ーーーーーーーープログラム終了ーーーーーーーーーーー//oya.hの作成 //プログラム内容:親クラスの宣言、作成//ーーーーーーーープログラム開始ーーーーーーーーーーー#ifndef _OYA_H_#define _OYA_H_ //親クラスの作成 class Oya{ public: //コンストラクタ Oya(); //デストラクタ virtual ~Oya(); //関数oyaSetを宣言 void oyaSet(int set); //関数OyaBを宣言 //数値を読み込む関数 int oyaGet(); //関数oyaIndiを宣言 //計算及び表示する関数 void oyaIndi(int num); private: //変数の宣言 int oya_set; //取得した値格納用変数 int oya_calc; //計算結果格納用変数 }; #endif //oya.h終了 //ーーーーーーーープログラム終了ーーーーーーーーーーー//oya.cppの作成 //プログラム内容:親クラスの処理を実装//ーーーーーーーープログラム開始ーーーーーーーーーーー//ヘッダのインクルード #include <iostream> #include "oya.h" //名前空間の宣言 using namespace std; //ーーーーー関数の作成ーーーーー //コンストラクタ //親クラスの変数を初期化 Oya::Oya():oya_set(0),oya_calc(0){ cout<<"親クラス(Oya)のインスタンス生成"<<endl; } Oya::~Oya(){ cout<<"Oyaクラスのデストラクタ"<<endl<<endl; } //セッター (数値の書き込みを行う)関数の作成 void Oya::oyaSet(int set){ oya_set = set; } //ゲッター(oyaSetに書き込みした数値を呼び出す)関数の作成 int Oya::oyaGet(){ return oya_set; } //計算及び表示する関数 void Oya::oyaIndi(int num){ cout<<"Oya::oyaSetに代入した数値:"<<oya_set<<endl; cout<<"oyaIndiに入力した数値*oyaSetに入力した数値:"<<oya_set*num<<endl; //計算 oya_set = oya_set*num; } //ーーーーーーーープログラム終了ーーーーーーーーーーー//ko.hの作成 //プログラム内容:子クラスの宣言、作成//ーーーーーーーープログラム開始ーーーーーーーーーーー#ifndef _KO_H_#define _KO_H_ //oyaクラスのインクルード #include "oya.h" //親クラスの関数を使うのに、必要 //子クラスの作成 class Ko:public Oya { public: //コンストラクタ Ko(); //デストラクタ ~Ko(); //関数の作成 //数値を表示する関数 void ko_A(); private: //表示用変数 int ko_num; }; #endif //ko.h終了 //ーーーーーーーープログラム終了ーーーーーーーーーーー//ko.cppの作成 //プログラム内容:子クラスの処理を実装//ーーーーーーーープログラム開始ーーーーーーーーーーー//ヘッダのインクルード #include <iostream> #include "ko.h" //名前空間の宣言 using namespace std;//ーーーー関数の作成 //コンストラクタ Ko::Ko():ko_num(20){ cout<<"Koクラスのインスタンス生成"<<endl; } //デストラクタ Ko::~Ko(){ cout <<"Koクラスのデストラクタ"<<endl; } //数値を表示する関数の作成 void Ko::ko_A(){ cout<< "ko_numの値:"<<ko_num<<endl; } //ーーーーーーーープログラム終了ーーーーーーーーーーー実行結果:https://paiza.io/projects/XF9SE7qqKf7bWlZ6FXS3qg (4) ちょっと説明 ・上記プログラムから分かる通り、 子クラスをインスタンス化して、それで親クラスの関数が実装できるようになる。 ・実行結果を確認すると、子クラスのインスタンス作成時に、 親クラスのインスタンスも同時に作成されることになる。3.関連記事・C++勉強メモ1(Hellow worldの表示)・C++勉強メモ2(数値、文字の入出力)・C++勉強メモ3(名前空間とは) ・C++勉強メモ4(ポインタ)・C++勉強メモ5(クラス1)・C++勉強メモ6(クラスについて2_アクセス指定子) ・C++勉強メモ7(クラスについて3(ゲッターとセッター)) ・C++勉強メモ8(コンストラクタとデストラクタ) 4.参考にしている本1週間でC++の基礎が学べる本 (1週間プログラミング) [ 亀田 健司 ]価格:2860円(税込、送料無料) (2022/3/20時点)楽天で購入
2022.05.07
コメント(0)
![]()
new演算子とdelet演算子1.本日の内容 (1) new演算子とdelet演算子の意味と使い方を理解する。2.内容 (1) メモリの4領域 ・C/C++でプログラムを実行すると、OSはメモリ領域を確保する。 ・メモリ領域は、大きく4つの領域に分かれている。名前説明1プログラム領域プログラム(マシン語)が格納される場所2静的領域 グローバル変数やstatic変数が置かれる領域 3ヒープ領域 動的に確保されたメモリを置く領域4スタック領域 ローカル変数等が置かれる領域(関数内で使用する変数など、関数が終わると破棄される) (2) インスタンスのメモリ領域 インスタンスは、スタック領域に生成される。 (ここでは、クラスのインスタンスのこと) 処理している関数の中で、定義する。 関数が呼び出されるとインスタンスが作成される。 関数の処理が終わるとメモリから自動的に消去される。 (3) インスタンスの生成とメモリ 画像データなどメモリを大量に消費するインスタンスを作成した場合、 インスタンスが削除されない場合、メモリを圧迫し、動作が重くなったりする。 自由なタイミングで、インスタンスの生成と削除したい場合がある。 その時に、使用されるのがnew演算子とdelet演算子である。(4) new演算子とdelet演算子 new演算子:「ヒープ領域」にメモリを確保する演算子。 delet演算子:newで確保したメモリ領域を消去(解放)するための演算子。※ヒープ領域でのメモリ確保は自由なタイミングで出来る。 静的領域やスタック領域と違い、消去するタイミングが決まっていない。 自分自身の手で消去する必要がある。 (5) 使用方法 (a) ポインタの宣言と初期化 クラス名* 変数名 = NULL; 例: Car * pCar = NULL; (b) インスタンスの生成 変数名 = new クラス名(); 例: pCar = new Car(); (c) メンバ関数の使用 変数名 -> 関数名(); 例: pCar -> setSp(40); (d) インスタンス消去 delete 変数名; 例: delete pCar; (6) new演算子、delet演算子を使用したプログラムに変更する。//ファイル名:main.cpp//プログラム内容://publicとprivateで書かれたクラス及び変数のふるまいの違いを、表示で確認する。//ーーーーーーーープログラム開始ーーーーーーーーーーー #include <iostream>#include "test.h"using namespace std;int main(void){ // Your code here! //ポインタの宣言 Car* pCar = NULL; //追加 //インスタンス生成 //Car car; (変更前) pCar = new Car(); //スピード設定 pCar -> setSp(40); //car.setSp(10); //1.5時間移動したときの走行情報 pCar -> dri(1.5); //car.dri(1.5); //スピードの設定 pCar -> setSp(20); //car.setSp(20); //2時間移動したときの走行情報 pCar -> dri(2.0); //car.dri(2); //インスタンスの消去 delete pCar; cout<<"インスタンス消去終了"<<endl; return 0;} //ーーーーーーーープログラム終了ーーーーーーーーーーー//ファイル名:test.h //ーーーーーーーープログラム開始ーーーーーーーーーーー #ifndef _TEST_H_#define _TEST_H_class Car{ public: //すべてからアクセス可能 //コンストラクタ Car(); //デストラクタ ~Car(); //メンバ関数の宣言 //スピードの設定 void setSp(double sp); //走行に関する出力関数 void dri(double hour); private: //Carの中でのみ使用可能 //メンバ変数の宣言 //スピード double m_sp;};#endif //test.h終了 //ーーーーーーーープログラム終了ーーーーーーーーーーー//test.cppのファイル //ーーーーーーーープログラム開始ーーーーーーーーーーー #include <iostream>#include "test.h"using namespace std;//コンストラクタCar::Car():m_sp(0.0){ cout<<"Carクラスのインスタンス生成"<<endl;}//デストラクタCar::~Car(){ cout<<"Carクラスのインスタンス削除"<<endl;}//スピードの設定void Car::setSp(double sp){ //m_spにspの値を代入 m_sp = sp;}//走行に関する出力関数処理void Car::dri(double hour){ cout<<"m_sp:"<<m_sp<<endl; cout<<"m_sp*hour:"<<m_sp * hour<<endl;} //ーーーーーーーープログラム終了ーーーーーーーーーーー実行結果:https://paiza.io/projects/e4ns2kYvd0GTfJ48AQg4mg3.関連記事・C++勉強メモ1(Hellow worldの表示)・C++勉強メモ2(数値、文字の入出力)・C++勉強メモ3(名前空間とは) ・C++勉強メモ4(ポインタ)・C++勉強メモ5(クラス1)・C++勉強メモ6(クラスについて2_アクセス指定子) ・C++勉強メモ7(クラスについて3(ゲッターとセッター)) ・C++勉強メモ8(コンストラクタとデストラクタ) 4.参考にしている本1週間でC++の基礎が学べる本 (1週間プログラミング) [ 亀田 健司 ]価格:2860円(税込、送料無料) (2022/3/20時点)楽天で購入
2022.04.30
コメント(0)
![]()
クラスについて3(ゲッターとセッター)1.本日の内容 (1) ゲッターとセッター関数について理解する。2.内容 (1) ゲッターとは ・メンバ変数に書き込みを行うメンバ関数 (2) セッターとは ・メンバ変数の読み込みを行う関数 (3) ゲッターとセッターの意義 C++は、外部からのアクセスを制限(カプセル化)することにより、バグを起きにしている。 値の読み書きも外部から直接操作出来ないようように、別のメソッドを用意する。 その別のメソッドがゲッターとセッターである。 参考:https://qiita.com/CostlierRain464/items/07f46ba005c6c9bb42e2 (4) 関数名のつけ方 セッター:set変数名 ゲッター:get変数名 とすると分かりやすい。例: メンバ変数(m_num)のゲッター ・getNum メンバ変数(m_num)のセッター ・setNum (5) ゲッターとセッターの作成 ゲッターとセッターのプログラムを下記に示す。//ファイル名:main.cpp //プログラム内容: //ゲッターとセッターについて、表示で確認する。 //ーーーーーーーープログラム開始ーーーーーーーーーーー//ヘッダのインクルード#include <iostream>#include "test.h"//名前空間の宣言using namespace std;//メイン処理int main(void){ //クラスのインスタンス化 Test tes; tes.setNum(10); //setNum関数の実行(m_num=10になる) cout<<"m_num="<<tes.getNum()<<endl; //getNum()でm_numの値を呼び出し}//ーーーーーーーープログラム終了ーーーーーーーーーーー//ファイル名:test.h //ーーーーーーーープログラム開始ーーーーーーーーーーー//2重インクルード防止#ifndef TEST_H_#define TEST_H_//Testクラスの作成class Test{ public: //全てからアクセス可能 //メンバ関数の宣言 void setNum(int num); //private指定されたメンバ変数に書き込む関数 int getNum(); //private指定されたメンバ変数を読み込む関数 private: //メンバ変数の宣言 int m_num;};#endif //test.hファイル終了//ーーーーーーーープログラム終了ーーーーーーーーーーー//ファイル名:test.cpp //ーーーーーーーープログラム開始ーーーーーーーーーーー//ヘッダのインクルード#include <iostream>#include "test.h"//メンバ変数へ書き込む関数処理//実行するとメンバ変数m_numに値を書き込む。void Test::setNum(int num){ //メンバ変数 test_num にnumを代入する m_num = num;}//メンバ変数m_numの値を読み込む。//実行すると、m_numの値を返す。int Test::getNum(){ //test_numの値を返す。 return m_num;}//ーーーーーーーープログラム終了ーーーーーーーーーーー実行結果:https://paiza.io/projects/i1YakRX-gtc2FgXpYB3YnQ?language=cpp3.関連記事・C++勉強メモ1(Hellow worldの表示)・C++勉強メモ2(数値、文字の入出力)・C++勉強メモ3(名前空間とは) ・C++勉強メモ4(ポインタ)・C++勉強メモ5(クラス1)・C++勉強メモ6(クラスについて2_アクセス指定子) ・C++勉強メモ7(クラスについて3(ゲッターとセッター)) ・C++勉強メモ8(コンストラクタとデストラクタ) 4.参考にしている本1週間でC++の基礎が学べる本 (1週間プログラミング) [ 亀田 健司 ]価格:2860円(税込、送料無料) (2022/3/20時点)楽天で購入
2022.04.16
コメント(0)
![]()
コンストラクタとデストラクタ1.本日の内容 (1) コンストラクタとデストラクタについて理解する。2.内容 (1) コンストラクタ ・クラスをインスタンス化すると自動的に呼び出される特別な関数 ・コンストラクタの名前はクラス名と同じにする。 ・戻り値がない ・何かの処理を入れるかは自由 (2)コンストラクタの定義方法 書き方: クラス名::クラス名:メンバ1(初期値),メンバ2(初期値),・・・{ 処理 } 例: Car::Car():m_sp(0.0),m_mig(0.0){ 処理 } → メンバ変数、m_spの初期値=0.0 、m_migの初期値=0.0に設定 メンバ変数の初期化が必要無い場合の定義方法: クラス名::クラス名{ 処理 }ここで記載された処理は、コンストラクタを特に呼び出さなくても、クラスをインスタンス化した時に、自動的に実行される。 (3)デストラクタ: ・インスタンスが消去される直前で自動的に呼び出される。 ・ある関数内でインスタンスを生成した場合、 その関数の処理が終わった段階で、デストラクタが呼び出される。 処理後、解放されてインスタンスはメモリから解放されて無くなる。 ・クラス名の先頭に~(チルダ)をつける。 (4) デストラクタの定義: 書き方: クラス名::~クラス名(){ 処理 } 例: Car::~Car(){ 処理 }(5) まとめ ・コンストラクタはインスタンスが生成されるときに1度だけ実行されるメンバ関数 ・インスタンス生成時の初期化処理を記述する。 ・デストラクタは、インスタンスが消去されるときに1度だけ実行されるメンバ関数 ・インスタンス消去時の処理を記述する。 (6) コンストラクタとデストラクタを使用したプログラムの作成//ファイル名:main.cpp //プログラム内容: //コンストラクタとデストラクタの動作について確認する。//ーーーーーーーープログラム開始ーーーーーーーーーーー//ヘッダファイルのインクルード#include <iostream>#include "test.h"using namespace std;int main(void){ // Your code here! //インスタンス生成 Car car; cout<<"スタート"<<endl; //初期値で実行 car.dri(10); //スピード設定 car.setSp(10); //1.5時間移動したときの走行情報 car.dri(1.5); //スピードの設定 car.setSp(20); //2時間移動したときの走行情報 car.dri(2); return 0;}//ーーーーーーーープログラム終了ーーーーーーーーーーー//ファイル名:test.h //ーーーーーーーープログラム開始ーーーーーーーーーーー//2重インクルード防止#ifndef _TEST_H_#define _TEST_H_class Car{ public: //すべてからアクセス可能 //コンストラクタ Car(); //デストラクタ ~Car(); //メンバ関数の宣言 //スピードの設定 void setSp(double sp); //走行に関する出力関数 void dri(double hour); private: //Carの中でのみ使用可能 //メンバ変数の宣言 //スピード double m_sp;};#endif //test.h終了//ーーーーーーーープログラム終了ーーーーーーーーーーー//ファイル名:test.cpp //ーーーーーーーープログラム開始ーーーーーーーーーーー//ヘッダのインクルード#include <iostream>#include "test.h"using namespace std;//コンストラクタCar::Car():m_sp(0.0){ cout<<"Carクラスのインスタンス生成"<<endl;}//デストラクタCar::~Car(){ cout<<"Carクラスのインスタンス削除"<<endl;}//スピードの設定void Car::setSp(double sp){ //m_spにspの値を代入 m_sp = sp;}//走行に関する出力関数処理void Car::dri(double hour){ cout<<"m_sp:"<<m_sp<<endl; cout<<"m_sp*hour:"<<m_sp * hour<<endl;}//ーーーーーーーープログラム終了ーーーーーーーーーーー実行結果:https://paiza.io/projects/P6hJ0eznh26Uzz13n4_kGQ3.関連記事・C++勉強メモ1(Hellow worldの表示)・C++勉強メモ2(数値、文字の入出力)・C++勉強メモ3(名前空間とは) ・C++勉強メモ4(ポインタ)・C++勉強メモ5(クラス1)・C++勉強メモ6(クラスについて2_アクセス指定子) ・C++勉強メモ7(クラスについて3(ゲッターとセッター)) ・C++勉強メモ8(コンストラクタとデストラクタ) 4.参考にしている本1週間でC++の基礎が学べる本 (1週間プログラミング) [ 亀田 健司 ]価格:2860円(税込、送料無料) (2022/3/20時点)楽天で購入
2022.04.16
コメント(0)

こんにちは今回は、1年間でスワップがいくらになったのかを紹介します。だいたい1万通貨あたり、スワップ金利は、2300円程度にありました。収益計算: ・入金金額:54万円 ・スワップ合計利益:55000円 ・購入した通貨数:26万通貨去年は、まだまだ5円代だったので、多少リスクをとって運用できたので、 年利 = 55000/540000×100 = 10.1% くらいとなりました。今だと、メキシコペソが6円代なので、ここまでリスクは取れないので、安全を考えるなら、ざっくり4万入れたら1万通貨購入できるくらいですかね。別に投資してる分(株、投資信託、金、銀、プラチナ、仮想通貨など)があるので、もしもメキシコペソが下がったら、そっちから資金を回して、マイナス分は、確定。そこでポジション整理するように、意識しています。これをすることによって、ポジションが低い金額で持つことができるので、長期的に安全に運用しやすくなるんじゃないかなと思っています。本当は毎月積み立てるつもりだったんですが。前期にリスク高めに購入したので、今回は毎月積み立てにはなっていません。使用した証券会社は、みんなのFxで、去年までは、楽天FXや、DMMFX、LINE FXなど使っていましたが、下記3つの理由により、メキシコペソはみんなのFXでやることにしました。 ・スワップ金利が一番高い(独自で見比べた結果です) ・決済に、スワップ受け取りがある。(ポジション決済せずにスワップのみ受け取れる) ・スワップとポジションと利益が一番見やすい。今は、円安基調なので、+収支ですが、スワップでやる場合は、円高になってほしい所です。日銀に頑張ってもらって、低金利のままでお願いと日々願っています。購入とは別に、チャートを分析、見るのは、楽天FXが見やすいので、チャートを見るのだけは楽天銀行FXを使用しています。今現在みんなのFXを主軸として使っていますが。他にも下記のようなFX会社があり、いろいろなサービスや、取り扱いが違いますので、自分に合ったFX会社を、探してみるといいでしょう。FXや、証券会社などの口座を開設する場合、ポイントがもらえるサイトがあったり、利用を開始すると現金をキャッシュバックするキャンペーンがあったりするので、「ハピタス」などのポイントをもらえるサイトを利用して、お得に開設するとよいでしょう。他の関連記事:FXで不労所得を目指す(全4回)・FXのスワップで月5万の不労所得を目指す(その1)・FXのスワップで月5万の不労所得を目指す(その2:スワップ比較) ・FXのスワップで月5万の不労所得を目指す(その3:積立資金の確認) ・FXのスワップで月5万の不労所得を目指す(その4:長期積み立てで月5万)・FXのリスクについてFXの言葉の意味:・ロストカットとは (2)・証拠金維持率とは・純資産とは・レバレッジとは・ロットと取引量とは・1000通貨、10000通貨とは・スワップポイントとは
2022.04.10
コメント(0)
![]()
クラスについて2(アクセス指定子)1.本日の内容 (1) アクセス指定子の役割、宣言方法、使い方について理解する。2.内容 (1) アクセス指定子とは ・メンバ変数やメンバ関数にアクセス出来る範囲を指定するための修飾子。 (2) アクセス指定子の役割 ・要件を満たす範囲でできるだけ狭いアクセス範囲を指定することにより、不用意なエラーを防ぐ。 (3) アクセス指定子の種類アクセス指定子 意味 public :全ての範囲からアクセス可能 private :同一クラス又は同一インスタンス内でのみアクセス可能 protected :同一クラス又は同一インスタンス内もしくは、サブクラス及びそのインスタンス内でのみアクセス可能 (4) publicとprivateについて確認する。protectedについては、後の継承の項目で確認する。//ファイル名:main.cpp//プログラム内容://publicとprivateで書かれたクラス及び変数のふるまいの違いを、表示で確認する。//ーーーーーーーープログラム開始ーーーーーーーーーーー #include <iostream> #include "test.h" using namespace std; int main(void){ // Your code here! //インスタンス化 Test t; //class Testのaに1を代入 t.a =10; //t.b =2; //privateで宣言されているため、コメントアウトしないとエラーになる。 //class Testのfunc1を実行 t.func1(); //t.func2(); //privateで宣言されているため、コメントアウトしないとエラーになる。 return 0; } //ーーーーーーーープログラム終了ーーーーーーーーーーー//ファイル名:test.h //ーーーーーーーープログラム開始ーーーーーーーーーーー #ifndef _TEST_H_ #define _TEST_H_ class Test{ //すべての場所からアクセス可能なメンバ変数 public: int a; //同一クラス又は同一インスタンス内でのみアクセス可能なメンバ変数 private: int b; //すべての場所からアクセス可能なメンバ関数 public: void func1(); //同一クラス又は同一インスタンス内でのみアクセス可能なメンバ関数 private: void func2(); }; #endif //_TEST_H_の終了 //ーーーーーーーープログラム終了ーーーーーーーーーーー//test.cppのファイル //ーーーーーーーープログラム開始ーーーーーーーーーーー #include <iostream> #include "test.h" using namespace std; //class Testのメンバ関数func1の処理 void Test::func1(){ //func1を表示 cout<<"func1"<<endl; a=1; //main処理のインスタンスt.aと同じもの(コメントアウトするとa=10になる。) b=1; cout<<"a="<<a<<",b="<<b<<endl; //class Testメンバ関数func2を実行 func2(); } //class Testのメンバj関数func2の処理 void Test::func2(){ cout<<"func2"<<endl; a=2; //main処理のインスタンスt.aと同じもの b=2; cout<<"a="<<a<<",b="<<b<<endl; } //ーーーーーーーープログラム終了ーーーーーーーーーーー実行結果:https://paiza.io/projects/dRdV4lm1U5TiwCnCVhWiVw(5) 説明上記プログラムのmain.cppのt.b=2とt.func2();のコメントアウトを外すと、エラーが発生する。これは、Testクラス内で、privateの中にあるメンバ変数及びメンバ関数の為である。※private:のついている部分で宣言されたメンバ変数とメンバ関数は、外部からアクセス出来ない。 同一クラス又は同一インスタンス内でのみアクセス可能。「変数b」及び「関数func2()」は、func1の関数内からは、呼び出すことができるが、main関数内で呼び出すことは出来ない。オブジェクト指向言語では、メンバ変数へのアクセスへを、そのクラスのメンバ関数からしか出来ないように制限するのが一般的。privateのメンバ変数の値を設定、取得するためのメンバ関数が必要。(アクセス関数という。今回のfunc1)一連の処理のことをカプセル化という。C++では、pivateで外部からアクセス出来ないようにし、必要になった場合、アクセス関数を追加することが推奨されている。理由: ・複数作成する場合、意図せぬ値が代入され不具合を起こさない為に、必要最低限の操作だけを公開する。 ・メンバ変数の更新や取得するための関連する処理をひとまとめにすることにより、可読性が良くなる。3.関連記事・C++勉強メモ1(Hellow worldの表示)・C++勉強メモ2(数値、文字の入出力)・C++勉強メモ3(名前空間とは) ・C++勉強メモ4(ポインタ)・C++勉強メモ5(クラス1)・C++勉強メモ6(クラスについて2_アクセス指定子) ・C++勉強メモ7(クラスについて3(ゲッターとセッター)) ・C++勉強メモ8(コンストラクタとデストラクタ) 4.参考にしている本1週間でC++の基礎が学べる本 (1週間プログラミング) [ 亀田 健司 ]価格:2860円(税込、送料無料) (2022/3/20時点)楽天で購入
2022.04.09
コメント(0)
![]()
今回は、好きなライトノベルを紹介します。その名も「アクセルワールド」というライトノベルで、アニメだとソードアートオンラインが丁度10周年で話題となりましたが、そのソードアートオンラインを書いた人が書いているライトノベルです。時は、2046年の近未来主人公は、いじめられっ子で、心に傷があり、毎日憂鬱な生活をしています。そんな日常から、とあるゲームをきっかけに、ヒロインと出会い、救われ、成長し、逆に助けたり、強大な敵に戦っていく物語です。何よりこの小説が好きなのは、戦闘描写もさることながら。主人公の成長するにつれて、どんどん面白くなり、しかも想像を超える展開の連続で、先が読めないところです。ソードアートオンラインもめっちゃ面白いんですが。こっちもめちゃくちゃ面白いのに、あまり目立たないので。ソードアートオンライン好きだったらぜひ読んでほしいって思ってます。アニメ化もしたんですが。4巻までの内容で終わってしまい。それが、めっちゃモヤモヤする感じだったんで、そんなに人気が出ないで終わってしまったんですよね。悲しい。現在26巻まで出ていて。今なら25巻まで、4000円で読めるんです!!普通に、結構長いと思うかもしれませんが。あっという間に読めるので、とてもおすすめです。【中古】【全品5倍!4/1限定】アクセル・ワールド <1−25巻セット> / 川原礫(ライトノベルセット)楽天で購入
2022.04.02
コメント(0)
![]()
クラスについて11.本日の内容 (1) クラスの役割、宣言方法、使い方について理解する。2.内容 (1) クラスの役割 ・カプセル化することにより、外部からのアクセスを制限し、バグを起きにくくする。 ・クラスという枠でくくることにより、関連する変数、関数が明確になる。 (2-1) クラスの宣言 ・行う場所:ヘッダファイル ・宣言するもの:メンバ関数、メンバ変数 ・クラスの名前の命名規則:先頭大文字、他は小文字にする。(例:Test、Sanpleなど) (2-2) ルール ・メンバ変数とメンバ関数の宣言場所及び順序にルールはない。 ・クラスの「}」の後には、「;」を忘れないこと。 (2-3) 宣言方法://ーーークラスの宣言ーーーclass クラス名{ メンバ変数の宣言1; メンバ変数の宣言2; ・・・ メンバ関数の宣言1; メンバ関数の宣言2; ・・・ };//ーーークラスの宣言終了ーーーー例://ーーー開始ーーーーclass Test{ //メンバ変数 int sample; //メンバ関数 void calc(int set){ //処理 } }//ーーー終了ーーーーーーー(3-1) クラスのインスタンス生成 ・行う場所:cppファイル(メイン関数など) ・クラスは、インスタンスを生成(インスタンス化)することにより、使えるようになる。(3-2) インスタンス作成方法://ーーーインスタンス生成ーーーークラス名 変数名;//ーーーインスタンスの生成終了ーー例://ーーーインスタンス生成ーーーーTest test;//ーーー終了ーーーーーーーーーーー(4-1) クラスのメンバへのアクセス方法 ・行う場所:インスタンスを作成した.cppファイル ・宣言されているメンバへのアクセスは「.」を使用する。(4-2) クラスのメンバ変数へアクセス//ーーーメンバへのアクセスーーーー インスタンス化されたクラスの変数名.メンバ変数;//ーーーメンバアクセス終了ーーーー例://ーーーメンバ変数へのアクセスーーーー test.sample = 10;//ーーー終了ーーーーーーーーーーーーー(4-3) クラスのメンバ関数へのアクセス 行う場所:関数処理を書く.cppファイル メンバ関数内で、メンバ変数を使用する場合、インスタンス化する必要はない。//ーーーメンバ関数へのアクセスーーーー void クラス名::関数名(){ 関数処理の記載 }//ーーーメンバ関数アクセス終了ーーーー例://ーーーメンバ関数へのアクセスーーーーvoid Test::calc(int set){ cout<<"sample変数の値:"<<sample<<endl; cout<<"引数(set)の値:"<<set<<endl; cout<<"sample*set="<<sample * set<<endl; }//ーーー終了ーーーーーーーーーーーーー(5-1) 2重インクルード防止 ・意味:ヘッダファイルが複数ある場合、同じ名前のものがあるとエラーを起こす。 多重インクルードという。 多重インクルードされるのを防止する。 ・行う場所:ヘッダファイル(5-2) 2重インクルード防止方法://ーーー2重インクルード防止ーーーーーーー#ifndef _大文字で記述したファイル名_H_ #define _大文字で記述したファイル名_H_ 処理 #endif //ヘッダの最後//ーーー2重インクルード防止終了ーーーーーーー以上を下記プログラムで確認する://ファイル名:main.cpp //プログラム内容:Testクラスのインスタンス化、関数の実行 //ーーーーーーーープログラム開始ーーーーーーーーーーー//ヘッダファイルのインクルード#include <iostream>#include "test.h"//名前空間の設定using namespace std;//メイン処理開始int main(void){ // Your code here! //インスタンスの作成 Test test; //値を設定 test.sample = 10; //値の設定、計算、計算結果を表示 test.calc(2); return 0;}//ーーーーーーーープログラム終了ーーーーーーーーーーー//ファイル名:test.cpp //プログラム内容:クラスTestの関数作成 // 掛け算の計算及び計算結果の表示 //ーーーーーーーープログラム開始ーーーーーーーーーーー//ヘッダファイルのインクルード#include <iostream>#include "test.h"//名前空間の設定using namespace std;//関数の作成//掛け算の計算及び、計算結果を表示するプログラム//引数:int set :計算元の値void Test::calc(int set){ cout<<"sample変数の値:"<<sample<<endl; cout<<"引数(set)の値:"<<set<<endl; cout<<"sample*set="<<sample * set<<endl; }//ーーーーーーーープログラム終了ーーーーーーーーーーー//ファイル名:test.h //プログラム内容:クラスTestの作成 //ーーーーーーーープログラム開始ーーーーーーーーーーー//2重インクルード防止#ifndef _TEST_H_#define _TEST_H_//クラス:Testの作成class Test{ public: //メンバ変数の宣言 //設定する値 int sample=10; //メンバ関数の宣言 //計算と計算結果を表示する void calc(int set);};#endif //test.h終了//ーーーーーーーープログラム終了ーーーーーーーーーーー実行結果:https://paiza.io/projects/kO98WMP2GoZL7GGWF7Wehg3.関連記事・C++勉強メモ1(Hellow worldの表示)・C++勉強メモ2(数値、文字の入出力)・C++勉強メモ3(名前空間とは) ・C++勉強メモ4(ポインタ)・C++勉強メモ5(クラス1)・C++勉強メモ6(クラスについて2_アクセス指定子) ・C++勉強メモ7(クラスについて3(ゲッターとセッター)) ・C++勉強メモ8(コンストラクタとデストラクタ) 4.参考にしている本1週間でC++の基礎が学べる本 (1週間プログラミング) [ 亀田 健司 ]価格:2860円(税込、送料無料) (2022/3/20時点)楽天で購入
2022.04.02
コメント(0)
![]()
ポインタの使い方1.本日の内容 ・ここでは、ポインタの意味は説明しない。 ・ポインタを使う方法のみを説明する。 ・ポインタの意味については、下記サイトが分かりやすい。 ポインタについて参考:https://daeudaeu.com/pointer/ (1) ポインタの宣言、使い方について知る。2.内容 (1) ポインタの使い方 (a) 宣言方法: 型 *ポインタ名; (b) アドレスの代入 ポインタ名 = &アドレス名; (2) 例://ファイル名:main.cpp //プログラム内容: //ポインタpの使い方 //ーーーーーーーープログラム開始ーーーーーーーーーーー #include <iostream> using namespace std; int main(void){ // Your code here! //変数宣言及び初期化 int a = 100; //変数aに100を代入 //ポインタの宣言 int *p = NULL; //ポインタpの参照先無効 //代入 p = &a; //ポインタpの参照先をaにする。 //aと*pの値を表示 cout<<"*p="<<*p<<endl; //ポインタpに入っている値を表示 return 0; } //ーーーーーーーープログラム終了ーーーーーーーーーーー実行結果:https://paiza.io/projects/EnYeVxN8K6qPn71cpd-KGA?language=cpp (3) 上記プログラムの説明 (a) ポインタ変数pの宣言 ・ int *p = NULL; ポインタはNULLを代入することにより、初期化する。 このNULLはNULLポインタと呼ばれる。 詳しい説明:https://monozukuri-c.com/langc-nullpointer/ (b) ポインタの代入 ・p=&a; ポインタは、数値ではなく、アドレス(&変数名)を代入する。 アドレスを指定せず、数値を入れるとエラーとなるか、アプリがクラッシュするので注意。 (c) 型について ポインタ変数のアドレスを設定する場合、同じ型のポインタ変数に対して行う。 ・int a; であれば int *p; ・double d; であれば、 double *pd; (4) 例2://ファイル名:main.cpp //プログラム内容: //ポインタpと変数bのふるまいの違いを表示し、確認する。 //ーーーーーーーープログラム開始ーーーーーーーーーーー #include <iostream> using namespace std; int main(void){ // Your code here! //変数宣言及び初期化 int a = 100; //変数aに100を代入 int b = 0; //ポインタの宣言 int *p = NULL; //ポインタpの参照先を0番地に設定 //値の表示 cout<<"a="<<a<<endl; //変数aに入っている値を表示 cout<<"b="<<b<<endl; //変数bに入っている値を表示 cout<<"*p="<<*p<<endl; //ポインタpに入っている値を表示 //ポインタPにaのアドレスを入れる。 cout<<"*pにaのアドレスを、bにaの値を代入"<<endl; //代入 p = &a; //ポインタpの参照先をaにする。 b = a; //bにaを代入する。 //aと*pの値を表示 cout<<"a="<<a<<endl; //変数aに入っている値を表示 cout<<"b="<<b<<endl; //変数bに入っている値を表示 cout<<"*p="<<*p<<endl; //ポインタpに入っている値を表示 //*p,bの変更 *p = 200; //ポインタbに200を入れる。 b = 300; //変数bに300を入れる。 cout<<"*pの値を200に、bの値を300に変更"<<endl; //aと*pの値を表示 cout<<"a="<<a<<endl; //変数aに入っている値を表示 cout<<"b="<<b<<endl; //変数bに入っている値を表示 cout<<"*p="<<*p<<endl; //ポインタpに入っている値を表示 return 0; } //ーーーーーーーープログラム終了ーーーーーーーーーーー実行結果:https://paiza.io/projects/3dfTgnSsG98AP7qD1L2Svg?language=cpp3.関連記事・C++勉強メモ1(Hellow worldの表示)・C++勉強メモ2(数値、文字の入出力)・C++勉強メモ3(名前空間とは) ・C++勉強メモ4(ポインタ)・C++勉強メモ5(クラス1)・C++勉強メモ6(クラスについて2_アクセス指定子) ・C++勉強メモ7(クラスについて3(ゲッターとセッター)) ・C++勉強メモ8(コンストラクタとデストラクタ) 4.参考にしている本1週間でC++の基礎が学べる本 (1週間プログラミング) [ 亀田 健司 ]価格:2860円(税込、送料無料) (2022/3/20時点)楽天で購入
2022.03.27
コメント(0)
![]()
C++の名前空間とは1.本日の内容 (1) 名前空間について理解する。2.内容 (1) 名前空間とは クラスを階層的に分類するための機構のこと。 名前空間があることにより、プログラムが大規模になった時に、 ・関係性のあるクラスをまとめる。 ・変数や関数の名前の重複を許容する。 などができるようになる。 イメージ的には、名前空間があると、同じ名前の関数が作成出来て便利なんだと思う。 参考:https://ufcpp.net/study/csharp/sp_namespace.html (2) 名前空間の使い方 (a)名前空間の定義方法: namespace 名前空間の名称{ 変数や関数の定義など } ※{}の中で定義した変数や関数等は、指定した名前空間の中でしか使えない。 (b)名前空間の利用:: 名前空間を利用する方法は2種類ある。 1: using namespace 名前空間名; →最初に宣言する。 2: 名前空間名::変数名やクラス名など; →変数、クラスを使用する際に、その名前の前につける。(3) 例://ファイル名:main.cpp //プログラム内容: //名前空間A,B 2個用意し、同じ名前の変数を作成する。 //作成した変数に数値を入れ、出力することにより、それぞれの名前空間でのふるまいを確認する。 //ーーーーーーーープログラム開始ーーーーーーーーーーー //ヘッダーの宣言 #include <iostream> //名前空間の宣言 using namespace std; //名前空間Aのpowerを作成 namespace A{ int power; //名前空間Aの変数powerを作成 } //名前空間Bのpowerを作成 namespace B{ int power; //名前空間Bの変数powerを作成 } //関数のプロトタイプ宣言 void funcA(); void funcB(); //メイン関数処理 int main(void){ //変数への代入 A::power = 100; //名前空間Aのpowerに20を代入 B::power = 200; //名前空間Bのpowerに30を代入 cout<<"main:A::power="<<A::power<<endl; //名前空間Aのpowerを表示 cout<<"main:B::power="<<B::power<<endl; //名前空間Bのpowerを表示 funcA(); //関数Aを使用 funcB(); //関数Bを使用 return 0; } //関数Aの作成 void funcA(){ //名前空間Aを使う。 using namespace A; cout<<"funcA:A::power="<<power<<endl; //名前空間Aのpowerを表示 cout<<"funcA:B::power="<<B::power<<endl; //名前空間Bのpowerを表示 //power(名前空間A)の値を変更 power = 10; } //関数Bの作成 void funcB(){ //名前空間Bを使う。 using namespace B; cout<<"funcB:A::power="<<A::power<<endl; //名前空間Aのpowerを表示 cout<<"funcB:B::power="<<power<<endl; //名前空間Bのpowerを表示 } //ーーーーーーーープログラム終了ーーーーーーーーーーー実行結果:https://paiza.io/projects/xJo73W2uMbGVfA5nM8MygA?language=cpp (4) プログラムの流れ (a)名前空間AとBを用意する。 (b)関数を使えるように、プロトタイプ宣言をする。 (c) メイン処理を開始 (d) 名前空間Aのpowerに100を代入する。 (e) 名前空間Bのpowerに200を代入する。 (f) 名前空間Aのpowerを表示する。 (g) 名前空間Bのpowerを表示する。 (h) 関数fncAを実行する。 (i) 関数funcAの内容: (i-1) 名前空間Aを宣言 (i-2)名前空間Aのpowerを表示する。 (i-3) 名前空間Bのpowerを表示する。 (名前空間Bは宣言されていないため、書き方が異なる) (i-4) 名前空間Aのpowerに10を代入する。 ( j) 関数funcBを実行する。 (k) 関数funcBの内容: (k-1) 名前空間Bを宣言 (k-2) 名前空間Aのpowerを表示する。 (名前空間Aは宣言してないため、書き方が異なる。) (名前空間Aの値は関数funcAで書き換わっている) (k-3) 名前空間Bのpowerを表示する。 (l) プログラム終了例2:名前空間の使い方について下記2個のプログラムは、同じ結果となる。//ーーープログラム1ーーーーーー //ヘッダファイルのインクルード #include <iostream> int main(void){ // Your code here! //Hellow worldを表示 std::cout<<"Hello world"<<endl; return 0; }//---プログラム1終了ーーーー//ーーープログラム2ーーーーーー//ヘッダファイルのインクルード #include <iostream> using namespace std; //名前空間stdを使用 int main(void){ // Your code here! //Hellow worldを表示 cout<<"Hello world"<<endl; return 0; }//ーーープログラム2終了ーーーーーー 3.関連記事・C++勉強メモ1(Hellow worldの表示)・C++勉強メモ2(数値、文字の入出力)・C++勉強メモ3(名前空間とは) ・C++勉強メモ4(ポインタ)・C++勉強メモ5(クラス1)・C++勉強メモ6(クラスについて2_アクセス指定子) ・C++勉強メモ7(クラスについて3(ゲッターとセッター)) ・C++勉強メモ8(コンストラクタとデストラクタ) 5.参考にしている本1週間でC++の基礎が学べる本 (1週間プログラミング) [ 亀田 健司 ]価格:2860円(税込、送料無料) (2022/3/20時点)楽天で購入
2022.03.26
コメント(0)
![]()
数値、文字の入出力1.本日の内容 (1) 数値をコンソールに入力し、計算結果を出力する。 (2) 文字列を入力し、それを文字を足して、表示する。2.内容 (数値をコンソールに入力し、計算結果を出力) (1) プログラムの基本的な書き方は、「C++勉強メモ1(Hellow worldの表示)」と同じ (2) 例://ファイル名:main.cpp //プログラム内容:数値をa,bを入力し、その足し算の結果を表示する。 //ーーーーーーーープログラム開始ーーーーーーーーーーー //ヘッダの宣言 #include <iostream> //名前空間の宣言 using namespace std; //メイン関数処理 int main(void){ // Your code here! //変数宣言 int a,b; //初期化処理 a=0; b=0; //a=を表示 cout<<"a="<<endl; //変数aにキーボードで入力 cin>>a; //b=を表示 cout<<"b="<<endl; //変数bにキーボードで入力 cin>>b; //a+bの計算結果を表示する cout<<"a+b="<<a+b; //0の値を返す。 return 0; } //ーーーーーーーープログラム終了ーーーーーーーーーーー実行結果:https://paiza.io/projects/-cWr_2U1D7lmk1LPdMRKAg?language=cpp(ブラウザだと、入力部分に、先に数値を入れて、実行を押す必要がある。) (3) 詳細説明 (a) 文字の入力用オブジェクト ・cin cin>>入力先の変数名; 数値や、文字列の入力に使用する。 coutと同様、標準名前空間(std)に含まれる、入力用オブジェクト。 cinも扱う場合も、coutと同様に、 ヘッダ(iostream)の宣言と名前空間(std)の宣言が必要 <<の向きが、coutとは逆になっている。 3.内容 (文字列を入力し、文字を足して表示) (1-1) 例(stringを使って文字列の入出力を行う)://ファイル名:main.cpp //プログラム内容:文字列を入力し、「入力された文字は、「入力した文字」です。」を表示する。 //ーーーーーーーープログラム開始ーーーーーーーーーーー//ヘッダ宣言 #include <iostream> #include <string> //名前空間宣言 using namespace std;//メイン処理開始 int main(void){ //オブジェクトの宣言 string s,t; //t:文字出力変数、s:文字入力変数 //処理開始 t="入力されたもじは、"; cout << "文字列を入力:"<<endl; cin >> s; cout <<t+s<<"です。"<<endl; return 0; }//ーーーーーーーープログラム終了ーーーーーーーーーーー実行結果:https://paiza.io/projects/2EHQhAzhdtSuKyw3MRwsyg?language=cpp (1-2)詳細説明 (a) ヘッダの宣言 ・#include<string> 文字列を扱うために、stringクラスを使用する。 このstringを使用するための、ヘッダ。 (b) オブジェクトの宣言 ・string s,t; stringクラスを使用し、sとtという名前で、stringクラスをオブジェクト化(オブジェクトを生成)している。 詳細は、クラスにて、別途記載予定。 string 文字列を入れる変数; で使用できること。 ヘッダ(string)の宣言、 名前空間(std)が必要ということだけ覚えておく。 参考:C++文字列クラス std::stringとは (2-1) 例(char型で、文字の入出力を行う。): //ファイル名:main.cpp //プログラム内容: //別の宣言方法で、下記2点の表示を行う。 //abc の出力 //入力した文字列の表示をする。 //ーーーーーーーープログラム開始ーーーーーーーーーーー //ヘッダのインクルード #include <iostream> //名前空間宣言 using namespace std; //メイン処理 int main(void){ // Your code here! //char型の変数宣言 char s1[]={'a','b','c','\0'}; //abcを入力 char s2[]="入力した文字"; char s3[]={}; //入力用変数 //文字列の出力 cout << "s1="<<s1<<endl; cout << "s2="<<s2<<endl; cin >> s3; cout << s3 << endl; //cout <<s2+s1<<endl; //これはできない。 } //ーーーーーーーープログラム終了ーーーーーーーーーーー実行結果:https://paiza.io/projects/nAayemuwxg6_JKz_4wQqSg?language=cpp(2-2) 詳細説明 (a) 変数宣言 ・char 変数名[] = {'a','b','c','\0'}; char型の場合、配列を使用して、文字を入れる。 {}でやる場合、1文字ずつ、入れる。 (あまり使わなそう) ・char 変数名[] = "文字列"; "で囲んだ部分を文字列として使用することができる。 ・char 変数名[] = {}; からの配列の変数を用意する。文字を入力することが可能。 (3) char型と、stringクラスの長所と短所 charの変数型、stringクラス、どちらを使用しても文字列の入出力は可能。 この二つは、長所と短所があるので、使い分けをする。 (a) char型の長所: ・必要とするメモリが少ない ・処理スピードが早い ・C言語の資産を受け継げる (b) char型の短所: ・処理が複雑 ・エラーが起こりやすい (c) stringクラスの長所 ・扱いが簡単で分かりやすい ・エラーを起こしにくい (d) stringクラスの短所 ・char型の配列に比べて余計なメモリが必要 ・char型の配列よりも処理スピードが遅い4.関連記事・C++勉強メモ1(Hellow worldの表示)・C++勉強メモ2(数値、文字の入出力)・C++勉強メモ3(名前空間とは) ・C++勉強メモ4(ポインタ)・C++勉強メモ5(クラス1)・C++勉強メモ6(クラスについて2_アクセス指定子) ・C++勉強メモ7(クラスについて3(ゲッターとセッター)) ・C++勉強メモ8(コンストラクタとデストラクタ) 5.参考にしている本1週間でC++の基礎が学べる本 (1週間プログラミング) [ 亀田 健司 ]価格:2860円(税込、送料無料) (2022/3/20時点)楽天で購入
2022.03.22
コメント(0)
![]()
C++でHellow worldを表示1.やりたいこと(目標、計画) (1) 急遽C++をやる必要がでたので、「1週間でC++の基礎が学べる本」を参考に、C++の基礎的な学習を行う。 (2) 最終的には英語学習アプリを作成してみる予定。※私の場合、事前知識として、C言語の基礎は下記サイトや、下記のような内容について学習済み・C言語入門(ドットインストール)・初心者のPIC勉強メモ(新居浜高専PICマイコン学習キットVer.2)・STM32勉強日記2.学習環境 (1) 最初はブラウザでC++を実行できるため、そこで確認を行う。使用ブラウザ:https://paiza.io/ja/projects/new?language=cpp3.本日の内容 (1) Hellow worldをコンソールに表示する。4.内容 (1) やり方 プログラムの基礎的な流れ: (a)ヘッダの宣言 (b)名前空間を宣言する (c)メイン処理開始 (d)「Hellow world」を表示する処理を記載 (e)return 0を返して、プログラム終了 (2) 例://ファイル名:main.cpp//プログラム内容:Hellow worldを表示する。//ーーーーーーーープログラム開始ーーーーーーーーーーー//ヘッダの宣言(coutを使用するのに必要) #include <iostream> //名前空間の宣言(coutを使用するのに必要) using namespace std; //メイン処理開始 int main(void){ //Hellow worldを表示 //endlは改行 //cout<<で表示 cout<<"Hello world"<<endl; return 0; }//ーーーーーーーープログラム終了ーーーーーーーーーーー動作結果:https://paiza.io/projects/gMHXvyGzMTWBBAHGGzWY3Q(上記URLをクリックすると、書いたプログラムと、その実行結果が表示される) (3) 詳細説明 (a) ヘッダの宣言 ・#include <iostream> C言語でいう所のヘッダーファイルの宣言と同じ。 iostreamとは: 標準入出力オブジェクトを提供するライブラリ。 参考:https://cpprefjp.github.io/reference/iostream.html 今回は、「cout」という出力するための機能を使用するために、宣言する。 C言語と同様に、何かの機能を使う際に、このヘッダを宣言する必要がある。 (b) 名前空間の指定 ・using namespace std; C言語ではない、C++の機能。 名前空間といい、 using namespaceで宣言する。 stdというのは、標準空間として用意されている名前空間。 coutなどを使用する場合に宣言する必要がある。 名前空間の詳細については、別途記載予定。 (c) メイン処理 ・main(){ 処理 } C言語と同じく、メイン処理を記載するところ。 この処理部分が実行される。 (d) 標準出力オブジェクト ・cout ・cout << "出力したいもの"; または、変数を使う場合は cout << x ; (xは変数、変数xに入力されている値を表示する) で使用できる。 C++で用意されている標準名前空間(std)に含まれる、出力用オブジェクト オブジェクトの考え方は、難しいのでここでは書きません。 最初は、ヘッダを宣言して、名前空間を指定する。 これにより、それに指定されている機能が使えるというイメージでいいと思う。 参考:・cout日本語リファレンス ・旧新人による新人向けオブジェクト指向入門 (e) 改行 ・endl coutでは、endlを使用して、改行する。 (f) 戻り値 ・retrun 戻り値を返す。 全ての処理が完了すると、 0の値を返すということ。 0を返せば正常終了、0以外なら異常終了。 なんで、メイン関数だとreturn 0で終わるのかは、よくわからない。5.関連記事・C++勉強メモ1(Hellow worldの表示)・C++勉強メモ2(数値、文字の入出力)・C++勉強メモ3(名前空間とは) ・C++勉強メモ4(ポインタ)・C++勉強メモ5(クラス1)・C++勉強メモ6(クラスについて2_アクセス指定子) ・C++勉強メモ7(クラスについて3(ゲッターとセッター)) ・C++勉強メモ8(コンストラクタとデストラクタ) 6.参考にしている本1週間でC++の基礎が学べる本 (1週間プログラミング) [ 亀田 健司 ]価格:2860円(税込、送料無料) (2022/3/20時点)楽天で購入
2022.03.20
コメント(0)

今日は、ヘッダファイルの作成について勉強する。勉強内容のメモコードを書く流れ多重インクルード防止 → 外部のヘッダファイルのインクルード(必要であれば) → マクロ定義(#defineで定数を定義)→型定義 → プロトタイプ宣言型定義:typedefを使った型定義:typedef:データ型を別名で再定義出来る。使用場面: 構造体の型定義に使用される。書き方:typedef 既存のデータ型 新しいデータ型名;例://ーーープログラムーーーーーcode:c typedef signed char S8; //signed char をS8と書くことが出来る。 sighed char num1; //型定義によって下記形で書ける。 S8 num1;//ーーープログラムーーーーー参考:C言語typedefを使った型定義 構造体:「情報」をまとめて一つで使いたい扱いたいときに使用する。 複数の情報から構成されるデータをパッケージ化し、独自の型として定義する。参考: 構造体の型定義書き方:ーーーーーーーーーーーー構造体の型定義:基本的な書き方: stract 構造体タグ名{ 構造体メンバ; };main関数の中 構造体の型名 構造体変数名; 構造体変数名.構造体メンバ= xxxx;ーーーーーーーーーーーーー例://ーーープログラムーーーーcode:c struct Coordinate{ double latitude; double longtude; }; int main(void){ struct Coordinate pos; //構造体の変数定義 pos.latitude = 34.1; pos.longtude = 134.2; printf("経度:%lf、緯度:%lf",pos.latitude,pos.longtude); return 0; }//ーーープログラム終了ーーーーーーーーー確認:typedefを使った構造体の型定義:typedefを使用することにより、変数定義でstructを記述する必要がなくなり省略できる。書き方:ーーーーーーーーー typedef struct{ 構造体メンバ }構造体のデータ型名; main関数の中 構造体の型名 構造体変数名; 構造体変数名.構造体メンバ= xxxx;ーーーーーーーーーー例://ーーープログラムーーーー例:code:c typedef struct{ double latitude; double longtude; }Coodinate; int main(){ Coodinate pos; //構造体の変数定義 pos.latitude = 34.1; pos.longtude = 134.2; printf("経度:%lf、緯度:%lf",pos.latitude,pos.longtude); return 0; }//ーーーープログラム終了ーーーー実行結果の確認:https://paiza.io/projects/ggA3Rli70f3METXe7SM19g構造体変数の初期化方法:下記書き方で初期化が可能//ーーープログラムーーーーーcode:c typedef struct{ double latitude; double longtude; }Coordinate; int main(){ Coordinate potision; //構造体の変数定義 // 全メンバを初期化 Coordinate pos1 = {34.6461, 134.9991}; // 最初のメンバのみ初期化 Coordinate pos2 = {34.6461}; //他のメンバは0になる。 //メンバのコピー Coordinate pos3 = po1; printf("経度pos1:%lf、緯度pos1:%lf\n",pos1.latitude,pos1.longtude); printf("経度pos2:%lf、緯度pos2:%lf\n",pos2.latitude,pos2.longtude); printf("経度pos3:%lf、緯度pos3:%lf\n",pos3.latitude,pos3.longtude); return 0; }//ーーープログラム終了ーーーーー確認:ということで、今回はここまで。
2021.11.27
コメント(0)

今日は、AD変換とスイッチの割り込み処理を同時にやるのを終わらせたい。・前回やった時点で、AD変換をして、テラタームに表示・スイッチを押すと、割り込み処理が入り、文字を表示するように一応出来た。ただ、文字化けしていたが。今日は、前回作成したプログラムと、その前のやつを比較し、何が駄目なのか原因を突き止める。まずは、CubeMXの設定の見直しから、行う。出来てる方:(1) nvicの設定(2) ADCの設定(3)出来てない方のNVICの設定(4)ADCの設定一番大きな違いは、USARTの割り込み順位を出来てる方は2にしてるのに対し、出来てない方は1にしているところだろう。出来てる方のプログラムのUSARTを1に変更して、動作を確認してみよう。結果は変わらなかった。そうすると、プログラムが間違ってるっぽいな。二つのプログラムを出して、確認する。出来ない方と、出来る方で比べたときに、やはり、出来ない方にブレークポイントをスイッチの読み込みにおいても反応しない。ということは、そこらへんが間違っているんだと思う。色々やりつつ、試行錯誤してみた。なんだろ、何が違うのか、分からん。もう一度、スイッチ読み込み部分を比較しよう。あ。。。。。。スペルが違う・・・・void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)のところがvoid HAL_GPIO_EXIT_Callback(uint16_t GPIO_Pin)になってしまってるぞ・・・・普通にEXITでも動くってことは、EXITっていうやつがあって、それが違う役割を持ってるから、プログラム的には動くけど、ボタンは反応しなかったのか!!!やっぱり、そこらへんが怪しいとは思ってたけど。全然気が付かなかった・・・・ということは、多分これを直せばできるはず!!おお、ボタンを押したら、動いた。良かったぁぁああああ。後は、これを元に、practice2を編集しなおせば完璧だ。実装した!!完璧ですわ。思った通りの動きするぞ。めっちゃいい感じだ。そしたら、今日は回路作成はまだしないので、LCDのプログラムの実装を考えていこうかな。後、ブログで公開するように、後で、動画の撮影をしよう。ここまでの作業で、ブログ1時間、プロ蔵ミグ1時間30分くらいだけど。休憩するか迷う。お昼を考えるともう少しやろうかな。前に、mbedでのテストプログラムは、作成した。ただ、今回は、STM32のプログラムで動かすので、前に使ったライブラリは使えない・・・そういえば、DFplayerのライブラリもまだ作って無かった。まだまだ先は流そうだなぁ(瀕死)先に、DFplayerのライブラリ作成の方をやるか。LCDの方をやるか。まとめもやりたい。LCDの場合は今度はI2C通信なんだよなあ。一度区切りいいところまでやったからやる気が死んでる。LCD動作参考資料: ・STM32でLCD動作 ・STM32でI2Cをやってみる ・STM32でI2Cいじってみる少しやろうと思ったけど。やっぱり、やる気がでないので、いったん終了しよう。先にヘッダファイルの作成を行う。多重インクルードについて:STM32勉強日記(2021/7/10):ヘッダファイルについての学習プロトタイプ宣言: コンパイラに対して、関数の情報を与えるためのもの。参考:プロトタイプ宣言の仕方 戻り値の型 関数名(引数の型); →int tasu(int, int);とりあえず、今日は一旦ここまでとする。
2021.11.23
コメント(0)
なぜ組み込みでC言語が使われるのか1.使用される理由(1) シンプルで処理が高速 →非常にシンプルでマシン語(アセンブラ)に近い処理を記述可能。 無駄な処理が少なく、高速に処理を行える。(2) 無駄な機能がない →使用するROMやRAMの量を減らせる(3)メモリアドレスを直接指定してデータアクセスを記述可能 →CPUはアドレスと呼ばれる空間とそこに存在するデータを扱う。 CPUはそのアドレスにデータを読み書きすることでハードウェアやプログラムを動かす。 このアドレスに対するデータの読み書き操作をC言語は直接記述することが可能。 この記述方法としてポインタという概念が使われる。上記理由の(3)より、ポインタを理解する必要がある。参考:https://hirokuma.blog/?p=13922.ポインタの重要性 (1)ポインタはCPUのアドレスに対して直接データの読み書きができるC言語の機能。 (2)CPUからROM、RAM、デバイスなどのアドレス空間にアクセスできる。
2021.11.13
コメント(0)
![]()
こんにちはユキです。普段から自己啓発本を読むのが好きで、たまに読むのですが。それとは別に、問題や、自分の能力向上の為に、PCDAだったり、本の読み方だったり、習慣化に関する本を読み漁る事がしばしば有ります。ただ、実際のところ、本を読んでも、行動し続けるものがあるかというと、それは極々少数です。そんな中で、今回は5年前に読んだ、「アクションリーディング」という本があり、それから得られるものが有ったのか。それとも、全然無意味だったのかどうだろうかというのを、ふと思ったので、 それについて書きたいと思います。この「アクションリーディング」という本は、読書によって、自分の行動を変えるにはどうしたらいいかということを主眼とした本です。これは5年前に自分が書いた記事です。・今日の読書2016/8/19 アクションリーディング結論結論から言えば、このアクションリーディングに書いてある事の殆どのことが出来ていません。でも、得るものは有り、実際に行い続けていることもあります。自分はこの本を読んだことにより、それまでの読書の仕方が変わり、行動が変わったきっかけであった。その点を考えれば、読んで良かったと言えると思っています。学べたこと今思えば、この本で一番何が学べたかというと、「読書への姿勢」だと思っています。偶々、自分の場合はこの本がきっかけだったという部分もあると思いますが。それまでは、確かに何かを知りたくて本を読んだりしていましたが、結果的に何が残っているかというと、あんまり、6年以上前に何を読んだとかって、殆ど記憶に残ってないんですよね。好きなラノベシリーズはめちゃくちゃ覚えてますがwそれが、この本を読んでから、自分が本を読む目的、何を知りたくて本を読むのか、どうしたいのかを考え、それをブログなり、この本で紹介されているシートなりにアウトプットするようになりました。総括今現在では殆どやっておらず、書くとしても目的を書くだけで終わることも多いです。それに、読んだ本をすべて覚えているわけでも、読んだ本の内容を全て覚えているわけではありません。ただ、自分がその本を読んで何をしたかったのかという部分は残っていることが多く。結果として、自分はこの本を読んだことにより、それまでの読書の仕方が変わり、行動が変わったきっかけであった。その点を考えれば、読んで良かったと言えると思います。あくまで、自分だから、この本だったというだけで。その本を読むタイミングや、前に他の本で似たような本を読んでいた場合などなど。きっかけは人によって違うと思います。この本を読んだからといって、誰しもが同じように思うわけではないということは、確かです。ですが、それはこの本を読んでみないと分からないですよね!ということで、5年前に読んだ本について振り返ってみました。皆さんは、読書してから数年たっても、記憶に残ってて、良かったといえる本はありますか?もしあれば、教えてください。実際には、この本は自分は何度か読んでるから覚えてるということもあると思いますが。自己啓発の本とか読んでも全然何も変わらないし、本なんか読んでも、意味ねえなって思ってる方がいましたら、一度この本を読んでみることをお勧めします。以上、読んでくださり、ありがとうございました。
2021.11.03
コメント(0)
7月の目標1. mp3playerの作成 (合計50時間) 回路 STM32学習 ・mp3playerの作成を計画通りに進める。 → 計画:mp3プレイヤー作成計画 ・動画を取って、記録する。 ・Scrapboxにメモしながら作業を進める。2 .柔軟、運動をする。 平日 、休日15分程度時間を取る。 ・開脚 ・ヨガ ・ストレッチ ・筋トレ3. ベイビーステップの定着化 ・朝起きたら、すぐに水を飲んで、カーテンを開ける。(毎日)確認と評価、改善1.mp3playerの作成 →OK:計画通りに進められたが、計画に足りない部分が幾つかあり、そのプログラミングの学習が必要になった。 ・計画:mp3プレイヤー作成計画 ・動画を取って、記録する。 →OK:00stdioを使用して、動画撮影を行った。 ・scrapboxにメモしながら作業を進める →OK:scrapboxに記録し、それをブログにて公開した。2.柔軟、運動 →NG:行動に移せなかった事が多い。 理由:やることを忘れてしまう。 意識しても体が動かない時がある。 改善の検討: やることを忘れてしまう → 筋トレに関する本を、布団を敷くところの上に、置いて家を出る。 意識しても体が動かない → お風呂の後の習慣化をする。3.ベイビーステップの定着化 起きたら、直ぐ水を飲んで、カーテンを開ける。(毎日) →NG:出来ない日もあった。 理由:中々起きてすぐに行動を起こすというのは、目が覚めていないこともあり、難しい所がある。 改善の検討: カーテンを開けるまでは難しいので、水を飲むということだけに注力しようと思う。 そのためには、事前に寝る前にスマホの上に水をセットしておくのが効果的なきがするので、寝る前に、目覚ましをかけているスマホの上に水をセットするようにする。
2021.07.31
コメント(0)

DFplayerを使うための配線図を引く1.今日やりたいこと(目標、計画) (1) 配線図の完成2.今日出来たこと(結果) (1) 配線図の完成まで→ 出来た。3.内容今日は、前回ざっくりとした部品配置までしたので、それを完成させる。前回:・STM32勉強日記(2021/7/18):mp3プレイヤー回路設計・STM32勉強日記(2021/7/17):DFplayer回路設計配線図を引く際の注意点・1点GNDを心がける・analogGNDと、センサーGNDは最短になるようにGNDをひく・USARTなどの通信ラインの線の長さは、短く、同じ線の長さにする。・電源線は太くだが、今回は特に線の太さは変えない。・直角配線は避ける。 45°にする。・コンデンサは、電流の流れを考え、電流の通り道に配置する。・出来れば、CPUのGNDと他のGNDは分断し、ノイズの影響を低くする。参考:https://www.noise-counterplan.com/faq/45/配線図を作成使用としたが、mbedのピンが、配線に関係のない所のピンがあり、線を引くのに邪魔なので、それが無いmbedライブラリを自作する。引いてて、気が付いたが、AD変換の可変抵抗の部分に抵抗を入れてやらないと、電流が流れすぎて壊れる可能性があることに気が付いた。危な・・・nucleo f401の3.3V出力を使用する場合、出力可能電流は500mAとなる。急遽、可変抵抗部分に抵抗を追加した。やりやすいように、一部ピン配置を変更した。DRCチェックをして、問題なかったので、とりあえず、これで配線図の作成が完了した。5時間かかったが、想定より4時間程度早く終わった。 回路作成は、明日以降にして、とりあえず、プログラミングの続きをしようと思う。 DRCチェックとは:http://easylabo.com/2014/08/eagle/1625/ ERCチェックとは:https://www.quadcept.com/ja/manual/schematic/erc-1作業の記録:https://0000.studio/yuuu/contents/406a7f9d-8f08-43db-9342-2cc412dae18c4.次回やりたいこと (1) DFplayerで、可変抵抗による音量調整と、次の曲の再生を実装する。5.関連記事・STM32勉強日記(2021/6/19) ・STM32勉強日記(2021/6/27)・STM32勉強日記(2021/7/3)・STM32勉強日記(2021/7/4)・STM32勉強日記(2021/7/5)・STM32勉強日記(2021/7/6) :DFplayerが動かせた!!・STM32勉強日記(2021/7/7):スイッチの割り込み処理・STM32勉強日記(2021/7/9):スイッチの割り込み処理・STM32勉強日記(2021/7/10):ヘッダファイルについての学習・STM32勉強日記(2021/7/11):AD変換を行う・STM32勉強日記(2021/7/12):AD変換を行う・STM32勉強日記(2021/7/13):AD変換とスイッチの割り込み・STM32勉強日記(2021/7/15):AD変換とスイッチの割り込み2・STM32勉強日記(2021/7/17):DFplayer回路設計・STM32勉強日記(2021/7/18):mp3プレイヤー回路設計
2021.07.26
コメント(0)

AD変換とスイッチの割り込み1.今日やりたいこと(目標、計画) (1) 一度、ピン割付だけして、スイッチの割り込み処理だけを入れたプログラムを作成する。 (2) それにAD変換の処理を追加する。 (3) テラタームで、AD変換とスイッチの動作確認を行う。2.今日出来たこと(結果) (1)AD変換のピン設定をした、スイッチの割り込み処理プログラム → 出来た。 (2)AD変換とスイッチの同時実装をし、テラタームで確認→ 出来た。3.内容前回までのプログラムで、スイッチの割り込み処理を加えたが、動作しなかった。一度、AD変換のプログラムを抜いて、動作確認をしたが、スイッチの割り込み処理が、動かなかった。多分、複数割り込みの設定が上手くできていない気がする。複数割り込み処理の設定などについて、調べる。1. 割り込み処理の用語STM32 CubeMXのNVIC設定は、・優先度グループの選択・割り込みの有効化と無効化・割り込み優先レベルの設定で構成される。2.優先度グループを選択・いくつかのビットを使用して、NVIC優先度レベルを定義・これらのビットは、横取り優先度とサブ優先度のに相当する2つの優先度グループに分割される。・値が小さいほど優先度が高く、 0が一番優先度が高い。参考:UM1718(1) Enabled :(割り込みの有効化と無効化) ・チェックボックス:チェックすると割り込みが有効になり、チェックを外すと、無効になる。(2) Preemption Priority : ・横取り優先度のレベルを選択。 ・横取り優先度は、ある割り込みが他の割り込みに割り込むことが出るかを定義する。 ・0の方が、優先度が高い。(3) Sub Priority :サブ優先度のレベルを選択。 ・サブ優先度は、割り込みの優先度レベルを定義する。調べてみてるが、あまり欲しい情報が無いな。そもそも、Sub Priorityは、選択できないっぽい。今回は、スイッチの方が優先度高いため、・スイッチの横取り優先度:1・AD変換の横取り優先度:2・USARTの横取り優先度:2にしてみよう。USARTの優先度が、どっちの方がいいのかわからないが、とりあえず低めに設定した。一度、AD変換のピンを設定した状態で、GPIOの割り込みプログラムを作る。無事に、動作を確認できた。これは、完成としよう。ただ、めっちゃ文字化けしてるのは謎だった。次は、AD変換の割り込み処理を追加した。スイッチと、AD変換の両立が、一応出来た! こっちも、めっちゃ文字化けが起こっていて、よくわからなくなった・・・・作成したプログラム:https://github.com/yuta009/adc-and-sw作成したプログラム(Cubemxの出力に、追加した所のみ記載)//ーーーーーーーーーーーーーーーー/* USER CODE BEGIN Header */ 仕様:青ボタンを押すと、Teratermに「SW:OK」を表示する。 AD変換で、可変抵抗を回すと、音量を変更する。 LED:ON 使用マイコンボード:nucleo f401re 使用PIN: PC_13:ボタン PA_0:AD変換入力 PA_2:USART2_TX PA_3:USART2_RX PA_5:LED ON PA_10:USART1_RX PA_10:USART1_TX *//* USER CODE END Header *//* Private user code ---------------------------------------------------------*//* USER CODE BEGIN 0 *///青ボタンスイッチよう変数__IO uint8_t sw1;//AD変換用変数:可変抵抗の電圧値を入力 __IO uint32_t analogValue;/* USER CODE END 0 *//* USER CODE BEGIN 2 */ sw1 = 0; //配列の宣言 uint8_t swon[5][5] = {"START","SON","SOFF"}; HAL_UART_Transmit(&huart2,&swon[0][0],sizeof(swon[0]),100); /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ //AD変換開始 HAL_ADC_Start(&hadc1); //ポーリング処理 if(HAL_ADC_PollForConversion(&hadc1,1000)==HAL_OK) { analogValue = HAL_ADC_GetValue(&hadc1); } //AD変換終了 HAL_ADC_Stop(&hadc1); uint8_t vol[] = {analogValue}; HAL_UART_Transmit(&huart2,vol,sizeof(vol),100); if(sw1 == 1) { HAL_UART_Transmit(&huart2,&swon[1][0],sizeof(swon[1]),100); HAL_Delay(1000); sw1 = 0; } } /* USER CODE END 3 */}/* USER CODE BEGIN 4 *///割り込み処理//Pusedの割り込み処理void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin){ //GPIOのPIN_13がONになったら if(GPIO_Pin == GPIO_PIN_13) { //sw1=1に変更する。 sw1 = 1; }}/* USER CODE END 4 *///ーーーーーーーーーーーーーーーーーーーーーーーーーーーー動作結果:一応、出来てるっぽいので、何故DFplayerのプログラムの方で出来ないのか、見比べて確認する。今日は、ここまでにする。4.次回やりたいこと (1) 今日作成したプログラムとDFplayerの動作プログラムの違いを確認し、動作しない原因を突き止める。5.関連記事・STM32勉強日記(2021/6/19) ・STM32勉強日記(2021/6/27)・STM32勉強日記(2021/7/3)・STM32勉強日記(2021/7/4)・STM32勉強日記(2021/7/5)・STM32勉強日記(2021/7/6) :DFplayerが動かせた!!・STM32勉強日記(2021/7/7):スイッチの割り込み処理・STM32勉強日記(2021/7/9):スイッチの割り込み処理・STM32勉強日記(2021/7/10):ヘッダファイルについての学習・STM32勉強日記(2021/7/11):AD変換を行う・STM32勉強日記(2021/7/12):AD変換を行う・STM32勉強日記(2021/7/13):AD変換とスイッチの割り込み・STM32勉強日記(2021/7/15):AD変換とスイッチの割り込み2・STM32勉強日記(2021/7/17):DFplayer回路設計・STM32勉強日記(2021/7/18):mp3プレイヤー回路設計
2021.07.25
コメント(0)

MP3プレイヤー部品表の作成1.今日やりたいこと(目標、計画) (1) 部品表の作成2.今日出来たこと(結果) (1) 部品表の作成 → 出来た。 (2) 配線図のざっくりとした部品の配置3.内容・「STM32勉強日記(2021/7/17):DFplayer回路設計」で、作成した仕様に則って、回路図を作成した。作成した回路図を元に、部品を再度抽出して、部品表を完成させる。(基本的に部品は、秋月電子というところが安いため、秋月でネット購入することが多いです。)DFplayerは、アマゾンが安かったので、アマゾンで購入。SDcardminiは、楽天が安かったので、楽天で購入。それ以外は秋月で購入する。表. mp3player部品表個数部品名型番1基板1mbed(マイコンボード)nucleo f401RE1電池ボックスBS-EC19V電池GL6F22A1DCジャック(DIPキット)AE-DC-POWER-JACK-DIP4XHコネクタ コンタクトSXH-001T-P0.62XHコネクタ トップ型 2P B2B-XH-A2XHコネクタ 2pXHP-21スピーカーF008051LCDACM1602NI-FLW-FBW-M011DFPlayer_MiniDFR02991SDカード 32GMU-J032GX-BLK7タクトスイッチ1273HIM-160G-G 13Pトグルスイッチ(ON-ON)2MS1-T1-B4-VS2-Q-E-S13Pトグルスイッチ(ON-OFF-ON)2MS3-T1-B4-M2-Q-E 1DIPスイッチ2PEDS102SZ4分割ロングピンソケットFHU-1x42SG1Cdsセル(光センサ)mi527/mi55271トランジスタ2sc18151可変抵抗(10kΩ)JH16K4B103L20KC-A1半固定抵抗GF063P1抵抗200kΩRD25S 200K1抵抗51kΩRD25S 51K1抵抗33kΩCF25J33KB5抵抗10kΩRD25S 10k2三端子レギュレーターNJM7805A2コンデンサ0.33uFRDER71H334K1K1H03B2コンデンサ0.1uFRDER72E104K2K1H03B1コンデンサ10uFRDEC71E106K2K1C03B上記部品表の抵抗とコンデンサについては、手持ちの表面実装のものがあるので、今回使うものと、リンク先は違います。とりあえず、これで回路部品の部品表は完成した。この部品表から、足りない部品を購入した。次に行うのを、配線図にするか、プログラミングにするか迷う。結局、配線図を作成する方を優先した。プログラミングは、いつでもいいので、先に大きさをある程度把握したい。ある程度部品の配置まで、終わった。実際、配線を引き始めると、動かすけど、ざっくり大きさは155×114必要そう。ざっくりと部品を配線図に、配置した。4.次回やりたいこと (1) 配線図の完成 (2) AD変換とGPIOの割り込み処理を両方同時に実装する。作業配信URL:https://0000.studio/yuuu/contents/7567118c-051c-4a01-a20d-4b542331099e5.関連記事・STM32勉強日記(2021/6/19) ・STM32勉強日記(2021/6/27)・STM32勉強日記(2021/7/3)・STM32勉強日記(2021/7/4)・STM32勉強日記(2021/7/5)・STM32勉強日記(2021/7/6) :DFplayerが動かせた!!・STM32勉強日記(2021/7/7):スイッチの割り込み処理・STM32勉強日記(2021/7/9):スイッチの割り込み処理・STM32勉強日記(2021/7/10):ヘッダファイルについての学習・STM32勉強日記(2021/7/11):AD変換を行う・STM32勉強日記(2021/7/12):AD変換を行う・STM32勉強日記(2021/7/13):AD変換とスイッチの割り込み・STM32勉強日記(2021/7/15):AD変換とスイッチの割り込み2・STM32勉強日記(2021/7/17):DFplayer回路設計
2021.07.23
コメント(0)

DFplayer回路設計1.今日やりたいこと(目標、計画) (1)作成したいmp3プレイヤーの構想を明確し、簡易的な機能についての仕様を作成する。 (2)構想を元に、回路設計を行う。 (3)eagleで回路図の作成2.今日出来たこと(結果) (1)仕様の作成→ 出来た。 (2)回路設計及び回路図の作成→ 出来た。3.内容前回の、プログラミングが終わってないが、先に作成するmp3playerの構想と機能の仕様を考えて、回路図を作成する。4連休で回路設計のはんだ付けなどをしたいので、今日、明日の間に部品を発注したい。やりたいこと、仕様:1. 機能: (1) mp3の音楽再生 (2) ボドゲモード (3) 光センサー感知し音楽再生2. LCDで下記を表示し、選択: (1)ゲーム or 音楽(上下選択)or光センサ感知モード 音楽モード: (a) 再生する音楽の選択(LCDに音楽名を表示) (左右選択) (b) フォルダーリピート (上下選択) (c) シングルリピート(上下選択) (d) ランダム再生(上下選択) (e) 次へ(上下選択) (f) 戻る(上下選択) ゲームモード: (a) 時間設定 (b) ファイル指定で音楽の再生 光センサ感知モード (a) 再生する音楽の選択 (b) 光センサ感度調整 (2) ボタン、スイッチの機能: (a) ボリューム:音量調整 (b) mbedに接続するスイッチ:上下左右、決定ボタン (c) DFplayerに接続するスイッチ:ループ、play/pause、音量+/Next、音量-/Previous (d) 電源スイッチ:電源のON、OFF (3) 電源仕様: (a) 電源:9V電池、ACアダプタ9V (b)消費電流: ・mbed:200mA (余裕をみて) ・DFplayer:400mA ・LCD:最大で、Backlightが200mA程度、 LCD本体:20mA程度多分、だいたいこのくらい。 (4) 必要回路 (a) 5V電源回路 (b) LCD回路 (c) mbed周辺回路 (d) DFplayer周辺回路mbedとLCDは、消費電流が大きいので、電池の消耗を抑える為に、DFplayerとは別で、電源のON/OFFを出来るようにする。・mbedの消費電流: データシートでMAX160mAで、nucleof401だと、余裕を見て200mAと考えておく。・DFplayerの消費電流: 電源5Vで2W駆動すると考えると、 最大 2/5=0.4A 程度になる。・LCDの消費電流: Backlight :(3.3-0.7)/15 =0.173A LCD本体:データシートに記載 (5) DFplayer単体動作時: ・音量変更をどうする? →mbedで変更出来るため、基本はいらないが、mbedナシでも変更できるようにするかどうか。 →問題:スイッチが増え、場所を取る。 →mbedを使用しないときは、LRに、mbedを使用しないときは、音量調節、次の曲、前の曲の機能を操作できるようにする。 →mbedを使用するときは、VRで変更できるようにする。9Pトグルスイッチで、mbedを使用する場合と、しない場合で切り替えが出来るようにしたい。3.部品の配置決めこれらを踏まえて、ざっくり配置を決める。 変更事項: (1) 後から追加:LCDの輝度調整ように、半固定抵抗、左下あたりに追加 (2) 半固定抵抗:https://akizukidenshi.com/download/ds/tocos/gf063_series-1.pdf (3) Cdsセルは、トランジスタを使用して、H/Lで判断する。 (4) 9Pトグルスイッチがいいものがなかったので、DIP 2Pと3Pトグルスイッチに変更する。4.部品の書き出しを行う。 今の時点では、ざっくり必要なのを書き出していく。 回路を作る際に、追加になると思う。5. 使用ピンを決める。「Nucleof401REピン配置」mbedで使用するピンを決める。 ・PA_9:UART1 TX DFplayer接続(DFplayerのRXに接続) ・PA_10:UART1 RX DFplayer接続(DFplayerのTXに接続) ・PB_3:SDA2 LCD接続 ・PB_10:SCL2 LCD接続 ・PB_12:ボタン右 ・PB_2:ボタン上 ・PC_7:ボタン真ん中 ・PA_7:ボタン左 ・PB_6:ボタン下 ・PB_14:ADC 音声ボリューム調整用可変抵抗 ・PB_13:ADC 光センサー ・PB_9:Busy(DFplayerの再生、停止確認) ・E5V:5V電源入力(外部電源使用) ・GND:GND接続データシートから、LCD接続のピン配置を確認する。 ・1.VSS :GND OK ・2.VDD:3.3V OK ・3.Vo:可変抵抗出力(コントラスト調整) OK ・4.SCL:mbed接続 OK ・5.SDA:mbed接続 OK ・6.BL+:3.3V接続 OK ・7.BL-:GND接続 OKデータシートから、DFplayer接続ピン配置を確認する。・1.VCC:5V OK・2.RX:mbed RX接続 OK・3.TX:mbed TX接続 OK・6.SPK2:スピーカ接続 OK・7.GND:GND接続 OK・8.SPK1:スピーカ接続 OK・9.io1:Pre/- OK・10.GND:GND接続 OK・11.io2 :NEXT/+ OK・12.ADKEY: 51kを接続:Loop All OK 33kを接続:ポーズ、プレイ OK・16.Busy:mbedに接続、再生確認(L:再生中、H:停止)6.回路図の作成ある程度情報がまとまったので、eagleを起動し、部品を追加していく。無いやつは、ライブラリをインターネットで探し、それでも無ければ、自分で作成する。スイッチDIP 2Pが見つからない。似たようなやつがないか見てみよう。eagleライブラリを探したら、それっぽいのを発見。swich-dil.libのDIP2というのがあった。今回は、基板を外で頼むわけではないので、これを採用する。もしも、基板を頼むなら、寸法を見る必要がある。eagleでレギュレーター(7805)を追加する。 regulatorで、検索する。 linearライブラリにあった。 78L05Zを選択する。参考:https://fabkura.gitbooks.io/circuit-docs/content/article2-3.htmlDFplayerは、検索して、ライブラリをダウンロードする。これ以外の部品も探して追加していく。可変抵抗とAD変換で、ボリュームを変更する。R1とR2(可変抵抗)の分圧で、AD変換した時の、電圧値からのVRの値を出し、R1の違いによるVRの値を比較する。Vin:3.3VR1:xΩR2:0~10kΩで可変Vr = R2*Vin/(R1+R2)Vr(max) = R2(max)*Vin/(R1+R2(max)) 音量= Vr/Vr( max)* 30 (音量最大30)計算したが、VR単体にして、並列にコンデンサをいれ、安定化させるだけにしようかな。わざわざ、抵抗を入れて低減させる必要は無い気がする。残留抵抗がある為、その分は、引く必要があるかも。最大音量は、そこまで求めてないので、割る値を、3.3Vではなく、3.5V程度にして、最小値の時の音量を小さくする。以上を元に、回路図を完成させた。今日は、以上にする。次は、これらを踏まえて、回路の部品表を完成させる。今日はとりあえず終了作業の記録:https://0000.studio/yuuu/contents/d35f18b2-1814-4eda-8ace-88179f53a3794.次回やりたいこと (1) 部品の発注 (2) プログラミングを進める。5.関連記事・STM32勉強日記(2021/6/19) ・STM32勉強日記(2021/6/27)・STM32勉強日記(2021/7/3)・STM32勉強日記(2021/7/4)・STM32勉強日記(2021/7/5)・STM32勉強日記(2021/7/6) :DFplayerが動かせた!!・STM32勉強日記(2021/7/7):スイッチの割り込み処理・STM32勉強日記(2021/7/9):スイッチの割り込み処理・STM32勉強日記(2021/7/10):ヘッダファイルについての学習・STM32勉強日記(2021/7/11):AD変換を行う
2021.07.20
コメント(0)
STM32でAD変換とスイッチの割り込み21.今日やりたいこと(目標、計画) (1)作成したプログラムの動作を確認する。2.今日出来たこと(結果) (1)動作確認を行った結果、動作しなかった。 3.内容スイッチの割り込み処理を加えたが、動作しなかった。AD変換の割り込み処理が入っているため、多分、スイッチの割り込み処理が発生しなかったのかな?割り込み処理の優先順位を変えたけど、意味がなかった。なんか、割り込み処理自体が、反応していないっぽいただ、それが何故なのか分からん。複数の割り込み処理の使い方が悪そうかも??よくわかってない。今日は、眠いので、明日にしよう。4.次回やりたいこと (1) なんで動作しないのか、確認 (2) 土日は、回路設計を先に行う予定。5.関連記事・STM32勉強日記(2021/6/19) ・STM32勉強日記(2021/6/27)・STM32勉強日記(2021/7/3)・STM32勉強日記(2021/7/4)・STM32勉強日記(2021/7/5)・STM32勉強日記(2021/7/6) :DFplayerが動かせた!!・STM32勉強日記(2021/7/7):スイッチの割り込み処理・STM32勉強日記(2021/7/9):スイッチの割り込み処理・STM32勉強日記(2021/7/10):ヘッダファイルについての学習・STM32勉強日記(2021/7/11):AD変換を行う
2021.07.19
コメント(0)
STM32で、AD変換とスイッチの割り込み。1.今日やりたいこと(目標、計画) (1)青ボタンを押すと、次の曲を再生する。 (2)可変抵抗によって、DFplayerの音量を調整する。 (3)上記2つの機能を実装する。2.今日出来たこと(結果) (1)プログラムの作成まで完了。 動作確認はまだ3.内容昨日の続きで、DFplayerのAD変換のプログラムに、スイッチの割り込み処理を追加する。そういえば、初期に作る際に、割り込み処理の順位を、AD変換とスイッチの入力で同じ順位にしてしまっている。これだと、AD変換している間に、スイッチを押しても、駄目な気がする。とりあえず、やってみるかな。プログラムを作成する。下記コードを、機能のプログラムに、追加する。//ーーーーーーーーーーーーーー //USER CODE BEGIN 0に記載 //変数制限 __IO uint8_t sw1; //USER CODE END 0 //USER CODE BEGIN 3に記載 //while(1){}の中 if(sw1 == 1) { //次の曲再生処理 } //USER CODE END 3 //USER CODE BEGIN4に記載 //GPIOの割り込み処理 void HAL_GPIO_EXIT_Callback(uint16_t GPIO_Pin) { if(GPIO_Pin == GPIO_PIN_13) { sw1 = 1; } } //USER CODE END 4 ということで、とりあえず、プログラムの変更を行った。実際の動作確認は明日やろうかな。今日は、ここまで。4.次回やりたいこと (1)作成したプログラムの動作確認5.関連記事・STM32勉強日記(2021/6/19) ・STM32勉強日記(2021/6/27)・STM32勉強日記(2021/7/3)・STM32勉強日記(2021/7/4)・STM32勉強日記(2021/7/5)・STM32勉強日記(2021/7/6) :DFplayerが動かせた!!・STM32勉強日記(2021/7/7):スイッチの割り込み処理・STM32勉強日記(2021/7/9):スイッチの割り込み処理・STM32勉強日記(2021/7/10):ヘッダファイルについての学習・STM32勉強日記(2021/7/11):AD変換を行う
2021.07.18
コメント(0)
STM32で、AD変換を行う。1.今日やりたいこと(目標、計画) (1)可変抵抗で電圧を分圧し、その電圧をAD変換をして、nucleof401で取り込む。 (2)とりこんだ値から、DFplayerの音量を調整出来る用にする。2.今日出来たこと(結果) (1)可変抵抗で電圧を分圧し、その電圧をAD変換をして、nucleof401で取り込む。→ 出来た。 (2)とりこんだ値から、DFplayerの音量を調整出来る用にする。 → 出来た。3.内容昨日の時点で、AD変換して、音量を調節するプログラムを作成したが、動かなかった。その原因として、位置が悪いのではないかということで、C言語のブラウザで確認したら、位置によって結果が変わることが分かった。今回は、STM32のプログラム側に反映させて、確認する。昨日は、配列の中に変数を使うと上手く出来なかった、ただ、それは位置が悪かった可能性が高いので、宣言の位置を変更して、再度実行する。ということで、下記をmain関数に記載した。これで、volume 15で動くはず。下記プログラムをmain()の中に、記載して確認してみる。//ーーーーーーーーーーー uint8_t volume1 = 0x0F; uint8_t vol_set[]={0x7E,0xFF,0x06,0x06,0x00,0x00,volume1,0xEF}; //UART送信データ 音量 HAL_UART_Transmit(&huart1,vol_set,sizeof(vol_set),100);//ーーーーーーーーーーーおお、ちゃんと動いた!!ということは、AD変換で値を取得して、volumeの値に変換。その後、配列に組み込む必要があるということだ。AD変換はwhileループの中で行っているから、volume1 に値を入れ、配列にいれる。UART通信という順で行う。最初に配列を宣言しておいて、後から値を代入したかったが、どうやラ無理っぽい。参考:http://www.isc.meiji.ac.jp/~re00079/EX1.2009/2009_8.htmlということで、とりあえず、AD変換終了後に配列の宣言を入れ、volume変化時に、UART通信を行い、音量変更コマンドを送るようにした。type defaults to 'int' in declaration of 'AD'のエラーが出た。なんだ???調べる。タイプは、「AD」の宣言でデフォルトで「int」になります とのこと。これは、constの使い方がなんか間違ってるっぽい?ということで、使い方を調べる。参考:https://www.sejuku.net/blog/24139どうやら、const AD 4096;としてたのが、良くなかったというか、自動的にこれだとint型が割り振られてますよってことっぽいですね。今回の場合は、特に問題ないですが。本当は、 const int AD 4096; と書くべきだったみたいです。const int に変更して、再度実行。結果、ボリュームを変更することによって、音量を変更出来るようになった!!ただ、volume範囲が上手くいっていないのと、volumeの微細な変化があり、安定はしていない。これは、回路側で吸収できるかな。作成したプログラム:https://github.com/yuta009/ADそれぞれの場所に、下記コードを追加した。//ーーーーーーーーーーーーーーー/* USER CODE BEGIN Includes */#include <string.h>#include <stdio.h>/* USER CODE END Includes *//* USER CODE BEGIN 0 */ //AD変換用変数:可変抵抗の電圧値を入力 __IO uint32_t analogValue;/* USER CODE END 0 */ /* USER CODE BEGIN 2 */ //標準出力stdoutにNULLを指定 setbuf(stdout,NULL);#if 0 volume1 = 15; //確認用変数 uint8_t vol_set[]={0x7E,0xFF,0x06,0x06,0x00,0x00,volume1,0xEF}; //UART送信データ 音量 HAL_UART_Transmit(&huart1,vol_set,sizeof(vol_set),100);#else //定数宣言 const int AD = 4096; //AD変換数値変更用 const int VOLMAX = 0x1E; //音量最大:30 //変数宣言 uint8_t volume1=0; //音量用変数 uint8_t volume2=0; //音量保管用変数 //配列の宣言 //uint8_t vol_set[]={}; //UART送信データ格納用配列:音量送信用 uint8_t next_set[]={0x7E,0xFF,0x06,0x01,0x00,0x00,0x00,0xEF}; //UART送信データ格納用配列:次の曲の再生 /* USER CODE END 2 *///ーーーーーーーーーーーーーーーーーーーーーーーとりあえず、当初の目的であった、 ・可変抵抗で電圧を分圧し、その電圧をAD変換をして、nucleof401で取り込む。 ・とりこんだ値から、DFplayerの音量を調整出来る用にする。この二つは出来た!!後は、これにスイッチを押したら、次の曲が流れるようにするだけだ。今日は、以上。4.次回やりたいこと (1)スイッチを押したら、次の曲を再生する。 (2)ボリュームで、音量を変化させる。 (3) (1),(2)両方機能として使えるようにする。5.関連記事・STM32勉強日記(2021/6/19) ・STM32勉強日記(2021/6/27)・STM32勉強日記(2021/7/3)・STM32勉強日記(2021/7/4)・STM32勉強日記(2021/7/5)・STM32勉強日記(2021/7/6) :DFplayerが動かせた!!・STM32勉強日記(2021/7/7):スイッチの割り込み処理・STM32勉強日記(2021/7/9):スイッチの割り込み処理・STM32勉強日記(2021/7/10):ヘッダファイルについての学習・STM32勉強日記(2021/7/11):AD変換を行う
2021.07.17
コメント(0)

STM32で、AD変換1.今日やりたいこと(目標、計画) (1)AD変換の値の取得 (2)可変抵抗で、DFplayerの音量を制御する2.今日出来たこと(結果) (1)AD変換の値の取得 (2)可変抵抗で、DFplayerの音量を制御する → 出来なかった。3.内容STM32勉強日記(2021/7/11):AD変換を行う昨日の時点で、ヘッダファイルの作り方について勉強していたが、とりあえず、先にAD変換を行い、可変抵抗で、DFplayerの音量を制御出来るようにしたい。ただ、半オール開けなので、眠くなったら寝ようかな。今回作成プログラム内容(予定) ・可変ボリュームから電圧の値をAD変換によって、取得する。 ・それを0~30のボリュームで調整出来る用にする。 ・青ボタンを押すと、次の曲が再生される。AD変換のやり方は、ADCの実習があったので、それを元に、作成していく。大まかな処理:・青ボタンスイッチは、割り込み処理で監視する。・スイッチが押されたら Pushed を 0から1に変更する。・Pushedが1の時、次の曲を再生すし、Pushed=0にする処理をメイン関数内に記載。・Pushedが1以外の時、何もしない処理を記載。・可変抵抗の電圧の入力を割り込み処理で監視する。・AD変換した電圧の値をvoltage1に格納する。・voltage1の値をvoltage2に格納する。・音量ボリューム用変数 volume = voltage1 / 30で、音量に変更する。・volumeはuint型にする。 (voltage1を30分割して、整数値を返す)・ボリューム変更用変数:vol[]=xxxを作成し、コマンドの数値を入れる。・if関数で、volumeの値が変わった時、UART通信で、データコマンドを送信する。・volumeの値の変化したら実行する:if(volume1 != volume2){}で、 volume2 = volume1にする。 ・volume1が変化した時だけ、ifの中の処理が実行される。定数の設定constを使うか、defineを使うかどっちが良いのだろうか。見た感じ、どうやら定数を使う場合、defineよりconstを使う方がよさそう。理由としては、defineを使用すると、同じ文字が入った時のバグになってしまい、コードが多くなればなるほど、厄介みたいです。参考:https://teratail.com/questions/126674定数の設定:const AD = 4096; //AD変換の数値を4096→30にするための定数const VOLMAX = 30; //volumeの最大値必要変数:・スイッチ監視:sw1・AD変換保管用変数(割り込み):analog_Value・ボリューム格納変数:volume1・ボリューム保管用変数:volume2・送信用データ:vol_set[]={} next_set[]={}とりあえず、C言語で、volumeの値の変化したら実行する部分について確認する。//ーーーーーーーーーーーーーcode:c //変数の値、変化時に、OKを出力する。 (確認) #include <stdio.h> int main() { int a=0; int b=0; while(1){ printf("aの値を入力"); scanf("%d",&a); printf("a:%d\n",a); printf("b:%d\n",b); if(a != b) { printf("OK\n"); b = a; } } return 0; }//ーーーーーーーーーーーーーーーーーーーー 使用ブラウザ:https://replit.com/languages/c CubeMXの黄色の注意マークについて黄色の場合は、制限付きの場合、黄色になる。たぶん、今回のは、UART通信とADCで競合してるのかも?参考:https://www.st.com/content/ccc/resource/sales_and_marketing/presentation/product_presentation/group0/af/3a/5b/03/b6/c5/46/28/45.CubeMX%20Tool/files/45.STM32L4-Ecosystem-CubeMX%20Tool%20Final_JP.pdf/jcr:content/translations/ja.45.STM32L4-Ecosystem-CubeMX%20Tool%20Final_JP.pdfということで、プログラムを作成したが、出来ない・・・どうやら、vol_send={0x0F,・・・}の部分で、音量設定部分を、変数に変更すると、何故か音がでなくなる。Teratermでは、同じ数字が、送られてきているが、UART通信の、外部とのやり取りを使用とすると上手く行かないみたいだ。//ーーーーーーーーーーーーーーーーーーーーcode:c //UART送信データ 音量 uint8_t vol_set[]={0x7E,0xFF,0x06,0x06,0x00,0x00,0x0F,0xEF}; HAL_UART_Transmit(&huart1,vol_set,sizeof(vol_set),100); //これだと、普通に動作する。 uint8_t vol_set[]={0x7E,0xFF,0x06,0x06,0x00,0x00,volume1,0xEF}; uint8_t volume1 = 0x0F; HAL_UART_Transmit(&huart1,vol_set,sizeof(vol_set),100); //これだと、動作しない。 //ーーーーーーーーーーーーーーーーーーーー配列の確認:ブラウザ上で配列を作り、printfを使って出力してみる。使用ブラウザ: https://paiza.io/ja/projects/new //ーーーーーーーーーーーーーーーーーーcode:c #include <stdio.h> int main(void){ // Your code here! int vol_set[]={0x7E,0xFF,0x06,0x06,0x00,0x00,0x0F,0xEF}; //printf("vol_set:%d\n",vol_set[]); int vol = 0x0F; int vol_set2[]={0x7E,0xFF,0x06,0x06,0x00,0x00,vol,0xEF}; printf("vol_set1:%d\n",vol_set); printf("vol_set2:%d\n",vol_set2); for(int i=0;i<8;i++){ printf("vol_set1[%d]:%x\n",i,vol_set[i]); printf("vol_set2[%d]:%x\n",i,vol_set2[i]); } }//ーーーーーーーーーーーーーーーーーー変数を入れても、問題なく動作した。うーん、分からん・・・ちょっと眠くなってきたので、いったん休憩を入れる。再開する。DFplayerを使ってPICで制御 を見直す。とりあえず、配列の使い方について、考える。C言語で確認した方と、自分が作成したほうで、何が違うのか・・・・あ、分かったかもしれない。int vol = 0x0F;int vol_set2[]={0x7E,0xFF,0x06,0x06,0x00,0x00,vol,0xEF};の位置関係かも?int vol = 0x0F;int vol_set2[]={0x7E,0xFF,0x06,0x06,0x00,0x00,vol,0xEF};であれば、vol_set2[]のvolに0x0Fが入るが、int vol ;int vol_set2[]={0x7E,0xFF,0x06,0x06,0x00,0x00,vol,0xEF};vol = 0x0F;だと、vol_set2[]のvolに0x0Fは、入らないのかもしれない。STM32のプログラムだと、whileの中で、volumeの計算をしていて、配列の呼び出しは、最初にしてしまっているから、入っていない可能性がある。C言語ブラウザで確認//ーーーーーーーーーーーーーーーーーーーーcode:c #include <stdio.h> int main(void){ // Your code here! int vol_set[]={0x7E,0xFF,0x06,0x06,0x00,0x00,0x0F,0xEF}; //printf("vol_set:%d\n",vol_set[]); int vol = 0; int vol_set2[]={0x7E,0xFF,0x06,0x06,0x00,0x00,vol,0xEF}; vol = 0x0F; printf("vol_set1:%d\n",vol_set); printf("vol_set2:%d\n",vol_set2); for(int i=0;i<8;i++){ printf("vol_set1[%d]:%x\n",i,vol_set[i]); printf("vol_set2[%d]:%x\n",i,vol_set2[i]); } }//ーーーーーーーーーーーーーーーーーーーーやっぱり、volを後に数値を入れると、駄目っぽい。今日は、寝不足もあり、早めに寝ようと思うので、これで終わる。明日、STM32の方のプログラムも変更して確かめる。今日の作業:https://0000.studio/yuuu/contents/31fc7a71-4e24-4b1e-af48-1e772c62f0614.次回やりたいこと (1)配列の宣言位置と、変数の位置を変更するし、変数で入れることが出来るか確認する。 (2)DFplayerの音量を可変抵抗で調整。5.関連記事・STM32勉強日記(2021/6/19) ・STM32勉強日記(2021/6/27)・STM32勉強日記(2021/7/3)・STM32勉強日記(2021/7/4)・STM32勉強日記(2021/7/5)・STM32勉強日記(2021/7/6) :DFplayerが動かせた!!・STM32勉強日記(2021/7/7):スイッチの割り込み処理・STM32勉強日記(2021/7/9):スイッチの割り込み処理・STM32勉強日記(2021/7/10):ヘッダファイルについての学習
2021.07.13
コメント(0)
全264件 (264件中 1-50件目)